【问题标题】:Image Processing on AndroidAndroid 上的图像处理
【发布时间】:2011-01-03 19:43:25
【问题描述】:

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: android image-processing


    【解决方案1】:

    我不确定在 Android 上解码成字节数组是否是最好的方法,但我可以提供我对图像处理的一般了解。

    如果您使用RGB_565,这意味着每个像素是 16 位,或其中两个字节。前 5 位是红色,接下来 6 位是绿色,最后 5 位是蓝色。在 Java 中处理这个问题很麻烦。我建议你使用更简单的格式,比如ARGB_8888,这意味着你有 32 位,或者每个像素四个字节,每个字节都有自己的值(alpha、red、green、blue)。

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

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

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

    【讨论】:

    • 感谢您提供这些有用的信息。现在我从文档中知道我只能以以下格式拍摄照片:PixelFormat.YCbCr_420_SP (NV21)、PixelFormat.RGB_565 或 PixelFormat.JPEG 所以我想,我尝试编写 RGB_565 编码。
    • 对。以该格式进行编辑,或者在编辑之前找到一种转换方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2013-02-08
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多