【问题标题】:BitmapFactory.decodeByteArray returns null when decoding data from ByteBuffer.array()从 ByteBuffer.array() 解码数据时,BitmapFactory.decodeByteArray 返回 null
【发布时间】:2017-08-02 16:24:35
【问题描述】:

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

相同的代码在旧版 Android(例如 4.3)上运行良好,但在 Android 7 上我收到错误 "D/skia (14391): --- SkImageDecoder::Factory returned null" 并且返回的图像为空。

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

我阅读了大多数与 BitmapFactory.decodeByteArray 相关的类似问题,但似乎没有一个与我的情况相似。

【问题讨论】:

    标签: java android bitmap bitmapfactory


    【解决方案1】:

    看来,如果我先将 ByteBuffer 中的数据读入一个数组,然后再提供这些数据,BitmapFactory.decodeByteArray 就能够正确解码图像。我错过了 ByteBuffer 数据实际开始的后备数组中的偏移量。

    所以正确的代码是:

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

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多