【问题标题】:Create bitmap from byte array, which is decompressed from a JPEG file via libjpeg从字节数组创建位图,通过 libjpeg 从 JPEG 文件解压缩
【发布时间】:2026-01-19 02:25:01
【问题描述】:

我使用 libjpeg(C 库)解压缩 JPEG 文件。现在我有一个无符号字符数组。如何在 JNI 中从该数组创建位图?

【问题讨论】:

    标签: android bitmap android-ndk java-native-interface libjpeg


    【解决方案1】:

    是的,它是possible,但走这条路应该有充分的理由。为获得最佳性能,请使用

    Bitmap bm = BitmapFactory.decodeByteArray(jpegArray, 0, jpegArray.length);
    

    即使您需要对同一个 jpeg 进行两次解码——一次在 C 中,一次在 Java 中,它也将节省您的编程工作量和执行时间。

    请注意,Android 内置了 libjpeg(请参阅您设备上的 /system/lib),decodeByteArray() 使用它,并且经过高度优化。

    【讨论】:

    • 感谢您的回答。我尝试了方法 BitmapFactory.decodeByteArray(jpegArray, 0, jpegArray.length);但失败了。我通过将位图对象传递给 jni 并为该位图填充值来解决这个问题。它奏效了。