将图像的字节数组转换为图像视图

44

我搜索了一下但是没有得到一个清晰的了解。如何将图像的字节数组设置为 ImageView?我尝试了这个方法,但它没有起作用。

BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
1个回答

122

以下是将 Bitmap 转换为 ByteArray,以及将 ByteArray 转换为 Bitmap 的方法:


将 Bitmap 转换为 ByteArray:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

将ByteArray转换为Bitmap:

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(Bitmap.createScaledBitmap(bmp, image.getWidth(), image.getHeight(), false));

4
这个代码可能会出现任何OutOfMemoryError吗? - Rafael Ruiz Muñoz
1
我的图像视图没有显示图片,你能告诉我可能的原因吗?但是没有错误提示。 - gayan1991
也许图片太大了,它拒绝在2048x2048以上进行绘制。我会编辑答案,使得在绘制时图片被缩放。 - epx
你可以传递bmp Bitmap对象,而不是创建另一个对象,使用createScaledBitmap方法,像这样:image.setImageBitmap(bmp) - maxwellnewage

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