[英]How to convert image into byte array and byte array to base64 String in android?
[英]Convert base64 byte array to an image
我有一个带有属性id,desc和imageByteArray的表单bean。 Struts动作被执行并重定向到JSP,我想访问这些bean属性,如id,desc,并转换imageByteArray并将其显示为图像。 我试过这篇文章 ,但那不适合我。
我使用Base64对bytearray进行编码 - 其中this.bean.imageByteArray引用表单bean
this.bean.setImageByteArray(new org.apache.commons.codec.binary.Base64().encode(imageInByteArr));
我尝试了这个,但没有工作
<img src="data:image/jpg;base64,<c:out value='${bean.imageByteArray}'/>" />
字节数组(byte [] imageByteArray)引用base64编码的JPG图像,我得到以下img标记作为输出,显然没有显示任何内容,
<img src="data:image/jpg;base64,[B@2e200e">
知道如何转换base64字节数组并在JSP中显示为图像?
你得到的只是数组的toString输出。 但是,您需要将字节数组转换为String。
您应该在bean中创建一个方法
public String getByteArrayString()
{
return new String(this.imageByteArray);
}
并在您的JSP中引用它。
虽然从技术上讲你应该定义用于base64字节数组的编码,但这并不是必需的,因为所有字符都在标准的7bit ASCII范围内。
DoubleMalt的答案(在撰写本文时被接受)是不幸的,因为它有点使用两个错误来做出正确的答案。 Apache Commons Codec使错误的做法变得如此简单没有帮助:(
Base64基本上是从二进制数据到文本的编码 - 因此,它几乎总是用于将byte[]
转换为String
。 您的问题是您正在将byte[]
转换为另一个byte[]
- 但您以后希望将该数据用作字符串。 以正确的方式转换一次会更好。
现在您可以准确选择何时转换为base64(和字符串)。 您可以在Java代码中尽早完成,在这种情况下我会使用:
// Obviously you'd need to introduce a new method for this, replacing
// setImageByteArray
this.bean.setImageBase64(new Base64().encodeToString(imageInByteArr));
<img src="data:image/jpg;base64,<c:out value='${bean.imageBase64}'/>" />
或者,您可以只保留bean中的二进制数据,并在JSP中执行编码。 自从我编写任何JSP以来已经很长时间了,所以我不打算在这里编写代码。
但基本上,您需要确定您的bean是将原始二进制数据保存为byte[]
,还是将base64编码数据保存为String
。 其他任何东西都是误导,IMO。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.