Android上的图像处理

时间:2010-01-11 16:07:46

标签: android image-processing

我正在为Android编写应用程序。 我需要对从相机拍摄的照片进行一些图像处理。 我使用Camera.PictureCallback来获取照片,然后我得到字节数组的图片。 问题是我想对照片的每个像素(一些过滤和其他东西)进行操作,所以我想,在字节数组中有照片并不是一个坏主意。但我不知道如何解释这个字节数组中的信息...我知道进行处理的唯一方法是使用BitmapFactory.decodeByteArray()然后使用Bitmap对象。这是处理大量图像处理的好方法吗? 现在我用的东西是这样的:

  

位图mPhotoPicture mPhotoPicture = BitmapFactory.decodeByteArray(imageData,0,imageData.length);

     

mPhotoPicture = mPhotoPicture.copy(Bitmap.Config.RGB_565,true);

我感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

我不确定解码到字节数组是否是在Android上执行此操作的最佳方式,但我可以提供我对图像处理的一般知识。

如果您正在使用RGB_565,则表示每个像素为16位,或者这些字节中的两个。前5位为红色,后6位为绿色,后5位为蓝色。处理这个问题在Java中是多毛的。我建议你使用更简单的格式,如ARGB_8888,这意味着你有32位,或每个像素四个字节,每个字节是它自己的值(alpha,red,green,blue)。

要进行测试,请尝试将每个第四个字节(如[3][7][11]等设置为0.这应该取出所有特定频道,在这种情况下,所有的蓝色。

[2][6][10]等将是每个像素的所有绿色值。

(注意,这四个组件的顺序可能相反,因为我不确定字节顺序!所以我可能刚刚告诉你如何取出alpha,而不是蓝色......)