Java 从ByteBuffer.array()解码数据时,BitmapFactory.decodeByteArray返回null
我正在解码来自ByteBuffer的数据,比如:Java 从ByteBuffer.array()解码数据时,BitmapFactory.decodeByteArray返回null,java,android,bitmap,bitmapfactory,Java,Android,Bitmap,Bitmapfactory,我正在解码来自ByteBuffer的数据,比如:BitmapFactory.decodeByteArray(inputData.array(),0,inputData.limit()) 同样的代码在较旧的Android上运行良好(例如4.3),但在Android 7上,我得到错误“D/skia(14391):--SkImageDecoder::Factory returned null”,返回的图像为null 从jpg文件正确加载图像数据。此外,ByteBuffer具有正确的位置和限制 我阅读了
BitmapFactory.decodeByteArray(inputData.array(),0,inputData.limit())代码>
同样的代码在较旧的Android上运行良好(例如4.3),但在Android 7上,我得到错误“D/skia(14391):--SkImageDecoder::Factory returned null”
,返回的图像为null
从jpg文件正确加载图像数据。此外,ByteBuffer具有正确的位置和限制
我阅读了大多数与BitmapFactory.decodeByteArray相关的类似问题,但似乎没有一个与我的场景类似 如果我首先将字节缓冲区中的数据读取到数组中,然后提供此数据,BitmapFactory.decodeByteArray
似乎能够正确解码图像。我错过了备份数组中ByteBuffer数据实际开始的偏移量
因此正确的代码应该是:
Bitmap im = BitmapFactory.decodeByteArray(inputData.array(), inputData.arrayOffset(), inputData.limit());
似乎如果我首先将字节缓冲区中的数据读取到数组中,然后提供此数据,BitmapFactory.decodeByteArray
能够正确解码图像。我错过了备份数组中ByteBuffer数据实际开始的偏移量
因此正确的代码应该是:
Bitmap im = BitmapFactory.decodeByteArray(inputData.array(), inputData.arrayOffset(), inputData.limit());