我收到一个字节数组,以及从C ++到JNI的单个通道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
,因为它仅适用于压缩位图,但不知道如何纠正这一点。
答案 0 :(得分:0)
使用Bitmap.createBitmap(int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)
显然第一个参数是未压缩的数组。