Android最佳方法将字节数组转换为位图?

12
我知道OutOfMemoryError异常是为什么发生的。但是有没有最佳方式将字节数组转换为位图?我使用了下面的代码,但当字节数组很大时,它会强制关闭应用程序并出现OutOfMemoryError异常。
我有一个API,它只返回字节数组,没有其他信息。
Bitmap bmp = BitmapFactory.decodeByteArray(bytearray, 0, bytearray.length);

字节数组有多大?这是一张很大的图片吗?也许对于手机内存来说,这张图片真的很大,如果你是从服务器检索它,那么你应该在服务器端进行压缩。 - DNax
请查看这个很好的解释:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html - dharmendra
4个回答

9
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapbytes , 0, bitmapbytes .length);

返回解码后的位图,如果无法解码图片,则返回null。

3

以下是我成功的方法: 顺便提一下,photo 是一个图像的字符串。

byte[] imgbytes = Base64.decode(photo, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(imgbytes, 0,
imgbytes.length);
imageupload.setImageBitmap(bitmap);

0

你可能需要使用以下方法(DOC,相同的方法,但带有选项参数):

public static Bitmap decodeByteArray (byte[] data, int offset, int length, BitmapFactory.Options opts)

尝试使用选项参数进行操作。希望这能帮到你 =)


0

你可能想使用AQuery库来加载你的图片,这将帮助你调整大小、查看等,并避免最常见的内存泄漏。该工具可以在这里找到:http://code.google.com/p/android-query/


如何使用AQuery将byte[]转换为位图? - atasoyh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接