从ByteBuffer.array()解码数据时,BitmapFactory.decodeByteArray返回null

时间:2017-08-02 16:24:36

标签: java android bitmap bitmapfactory

我正在解码来自ByteBuffer的数据,如:BitmapFactory.decodeByteArray(inputData.array(), 0, inputData.limit());

相同的代码适用于较旧的Android(例如4.3),但在Android 7上,我收到错误"D/skia (14391): --- SkImageDecoder::Factory returned null",返回的图片为空。

从jpg文件正确加载图像数据。 ByteBuffer也有正确的位置和限制。

我阅读了与BitmapFactory.decodeByteArray相关的大部分类似问题,但似乎没有一个类似于我的场景。

1 个答案:

答案 0 :(得分:0)

似乎如果我首先将ByteBuffer中的数据读入数组然后提供此数据,BitmapFactory.decodeByteArray能够正确解码图像。我错过了支持数组中ByteBuffer数据实际开始的偏移量。

所以正确的代码是:

Bitmap im =  BitmapFactory.decodeByteArray(inputData.array(), inputData.arrayOffset(), inputData.limit());