这是我的java代码,它从image构造base64字符串。然后放置base64 String html进行查看 构建的图像,但图像不是以某种方式构建的
public void getBase64String() throws FileNotFoundException {
FileInputStream itStrm = new FileInputStream(
"E:\\image\\56255254-flower.jpg");//image is lying at http://danny.oz.au/travel/mongolia/p/56255254-flower.jpg
String str = itStrm.toString();
byte[] b3 = str.getBytes();
String base64String = new sun.misc.BASE64Encoder().encode(b3);
//output of base64String is amF2YS5pby5GaWxlSW5wdXRTdHJlYW1AMTdlMDYwMA==
}
现在在html页面中我将base64String的输出放在img标签中以查看图像。但是图像没有显示出来 (而是显示十字图像图标)。我没有从下面的base64字符串显示图像?
<HTML>
<BODY>
<img src="data:image/jpeg;base64,amF2YS5pby5GaWxlSW5wdXRTdHJlYW1AMTdlMDYwMA=="/>
</BODY>
</HTML>
编辑: - 感谢Folks,我使用了byte [] bytes = IOUtils.toByteArray(is);.它对我有用!!
答案 0 :(得分:8)
这:String str = itStrm.toString()
不是图像,而是toString()
实例的FileInputStream
表示。
您必须从流中读取字节并将它们存储在字节数组中。并且,出于性能原因,缓冲流:
BufferedInputStream itStrm = new BufferedInputStream(FileInputStream(
"E:\\image\\56255254-flower.jpg"));
进一步阅读(剧透:内部解决方案)
答案 1 :(得分:0)
您需要使用read()
实例的FileInputStream
方法而不是toString()
来获取图片的内容。然后你就可以对它进行编码,并且应该按预期工作。
类似的东西:
int c;
StringBuffer result = new StringBuffer("");
while((c = fileInputStream.read()) != -1)
{
result .append((char)c);
}