我有一个Spring MVC Web服务,它将图像作为字节数组返回。输出采用json格式。格式为png 这是图像的代码段。
BufferedImage img = ImageIO.read(new File(caminho.replace("/", "//")));
imagem = ((DataBufferByte) img.getRaster().getDataBuffer
()).getData();
当我运行服务器时,这是输出:
[{ “ID”:0, “caminhoMDPI”:NULL, “caminhoHDPI”:“C:/用户/马科斯/图片/ postos /抽拉 -
MDPI / esso_logo.png “ ”caminhoXHDPI“:NULL, ”caminhoXXHDPI“:NULL, ”IMAGEM“:” AAAAAAAAAAAAAAAAAAAAAAA
... AAAAAAAAAAAAAAAAAAAAAAAAAA]
最终,“imagem”字段中会出现其他符号。我想这是对的,但我不是
确定。
在我的Android应用程序上,我有一个例程来下载图像并将其作为blob存储在数据库中。我收到json格式并将其转换为带有jackson的类。我已经记录了“imagem”字段,它看起来一样。
我的问题是我无法将其转换为图像。这是代码片段:
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。
我看了其他类似的帖子,试图改变一些行,但什么都没发生。我不知道这里发生了什么。提前谢谢。
答案 0 :(得分:1)
我解决了。在服务器中,图像应该像这样发送:
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;
}
谢谢大家;)