我有一个 Spring MVC Web 服务,它以字节数组的形式返回图像。输出为 json 格式。格式为png 这是图像的代码 fragment 。
BufferedImage img = ImageIO.read(new File(caminho.replace("/", "//")));
imagem = ((DataBufferByte) img.getRaster().getDataBuffer
()).getData();
当我运行服务器时,这是输出:
[{"id":0,"caminhoMDPI":null,"caminhoHDPI":"C:/Users/Marcos/Pictures/postos/drawable-
mdpi/esso_logo.png","caminhoXHDPI":null,"caminhoXXHDPI":null,"imagem":"AAAAAAAAAAAAAAAAAAAAAAA
啊啊啊啊啊啊啊啊啊啊啊……]
最终,其他符号出现在“imagem”字段上。我认为这是对的,但我不是
当然。
在我的 Android 应用程序上,我有一个例程来下载图像并将其作为 blob 存储在数据库中。我收到json格式并用jackson将其转换为类。我已经记录了“imagem”字段,它看起来是一样的。
我的问题是我无法将其转换为图像。这是代码 fragment :
byte[] img_bandeira = cursor.getBlob(cursor.getColumnIndex("img_bandeira"));
Bitmap bmpBandeira = BitmapFactory.decodeByteArray(img_bandeira, 0, img_bandeira.length);
ImageView ivBandeira = (ImageView) view.findViewById(R.id.ivBandeira);
ivBandeira.setImageBitmap(bmpBandeira);
我收到的只是一条消息:skImageDecoder::Factory 返回 null。
我看过其他类似的帖子,尝试更改一些行,但没有任何反应。我不知道这里发生了什么事。提前致谢。
最佳答案
我解决了。在服务器中,图像应该这样发送:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedImage img = ImageIO.read(new File(caminho.replace("/", "//")));
ImageIO.write(img, "png", baos);
baos.flush();
String base64String = Base64.encode(baos.toByteArray());
baos.close();
在我的应用程序中,它应该这样读:
public static Bitmap getImage(byte[] imageArray) {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imageArray);
Bitmap bitmap = BitmapFactory.decodeStream(byteArrayInputStream);
return bitmap;
}
谢谢大家;)
关于java - 使用 Android 将图像读取为字节数组:skImageDecoder::Factory 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27505374/