【发布时间】:2016-08-26 13:36:12
【问题描述】:
我正在通过 JNI 从 C++ 接收字节数组以及单个通道 cv::Mat 图像的宽度和高度。在 Java 中,我需要从中创建一个 Bitmap 以进行进一步处理。我已经尝试了标准选项,但我无法解码Bitmap(我不断收到null)。
JNI中的代码是
jbyteArray myJByteArray = env->NewByteArray(imageToScan.cols * imageToScan.rows);
env->SetByteArrayRegion(myJByteArray, 0, imageToScan.cols * imageToScan.rows, (jbyte *) imageToScan.data);
我正在检查我在 Java 中收到的数组长度以及宽度和高度,它们都正常。现在,我尝试了以下方法:
BitmapFactory.Options options = new BitmapFactory.Options();
options.outHeight = height;
options.outWidth = width;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
但它不起作用。我知道我不能使用BitmapFactory.decodeByteArray,因为它只适用于压缩位图,但不知道如何更正。
【问题讨论】:
标签: java android c++ opencv bitmap