1

我需要在不实例化位图的情况下从 Jpeg 图像中获取像素信息,然后将其传递给 JNI。

android 无法从相机中获取除 jpeg 图像之外的任何其他内容(除非您需要低分辨率,在这种情况下您可以使用PreviewCallback),所以我从 jpegCallback 获得了 byte[]。

int[]是否可以在不使用的情况下获取像素信息Bitmap.getPixels()

4

2 回答 2

1

如果您不想构建位图,则唯一的选择是自己解码 JPEG 缓冲区;这意味着要么找到另一个 Java JPEG 解压缩库,要么使用 JNI 和 C JPEG 库,例如libjpeg。或者,您可以从头开始编写一个,我不建议您这样做,除非您已经非常熟悉图像压缩例程,并且您有足够的时间来实现和调试。

正如 Scott 所问,为什么使用 Bitmap 是不可接受的?无论您采取什么路线,都必须调用一些东西来解压缩图像数据,并且使用BitmapFactory.decodeByteArray是一个简单的、已知可行的选项。

于 2013-01-30T21:35:57.743 回答
0

我看不出标准的 Android API 是如何实现的。我确定您可以使用第 3 方 JPEG 库(谷歌搜索可能会发现)。你为什么要避免位图?如果是内存限制,您可能需要使用BitmapRegionDecoder解码小的水平块

于 2013-01-30T20:23:20.793 回答