java - Android 16位彩色图像到位图

  显示原文与译文双语对照的内容
0 0

我正在尝试获得一个 16位的彩色图像,从一个嵌入式相机( 。这里的数据表) 分辨率 80 x 60分辨率。 我成功获得 9600 ( 80 * 60 * 16/8) 字节,但显示图像时出现问题) 。 我使用下面的代码将字节 array 转换为位图:

bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes));

jpegBytes是图像字节的array,长度为 9600字节。

现在,我得到了像这样的图像:

corrupted image

99%的时间不过,我可以以获得不受损坏的图像,如下所示:

uncorrupted image

很少有人对为什么会发生这种情况有任何建议? 非常感谢 !

更新:

看起来所有像素都在正确的位置,但是它们的RGB值混合起来了。 例如两个照片之间的白色部分是相同的,因为RGB的顺序不重要。 然而,很明显颜色混合在一起,因为红色的椅子在损坏的图像中显示为蓝色。

时间:原作者:6个回答

0 0

使用 Config.ARGB_8888 作为位图配置

public static final Bitmap.Config RGB_565的文档中:

每个像素都存储在 2字节上,并且只有RGB通道被编码: 红色存储 5位精密( 32可能值),绿色存储为 6位精密( 64可能值),蓝色存储为位精度。 根据源的配置,这个配置可以产生slight的可视工件。 例如如果没有抖动,结果可能显示绿绿色。 要获得更好的结果,抖动应该应用。 这种配置在使用不需要高颜色保真度的不透明位图时很有用。

原作者:
...