Android字节到位图

时间:2011-05-21 05:38:45

标签: android image bitmap bytearray

我在iPhone应用程序中运行良好,但在Android中遇到问题。我在两个应用程序中都使用相同的URL /数据。当我将ListView中的图像设置为来自字节的位图时,图像不会出现。数据就在那里。这是我分配视图的代码:

if (camera.snapshot != null)
    {
        bMap = BitmapFactory.decodeByteArray(camera.snapshot, 0, camera.snapshot.length);
        image.setImageBitmap(bMap);
    }

这是我将字符串数据转换为字节的地方:

camera.snapshot = responseData.getBytes();

图像是PNG文件。对于listview图像,它们的大小是我需要的大小的4倍,但我认为它们的大小完全符合我设置ImageView的边界。

在iPhone上,我只使用NSData,然后在ImageView中使用预建方法将其转换为图像。它完美无缺!我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

您可能需要使用decodeByteArray的4参数版本:请参阅http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeByteArray%28byte[],%20int, %20int,%20android.graphics.BitmapFactory.Options%29

选项取决于PNG图像的类型,因此您可能需要进行试验。对于通用的PNG,可能是这样的吗?

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDither = true;
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;

您可以查看http://developer.android.com/reference/android/graphics/BitmapFactory.Options.htmlhttp://developer.android.com/reference/android/graphics/Bitmap.Config.html了解更多详情。

答案 1 :(得分:0)

这里一切都很好。因此,您需要进行调试以尝试查找问题所在。即Camera.snapshot = null?即您可能无法正确获取数据。或者在布局中也可能存在显示imageview的问题。尝试将预定义图像设置为imageview并查看是否显示。通过这种方式,您可以跟踪问题。