2

这是我从图像构造base64字符串的java代码。然后放置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>

编辑:-谢谢大家,我使用了 byte[] bytes = IOUtils.toByteArray(is);。它对我有用!

4

2 回答 2

8

这:String str = itStrm.toString()不是图像,而是实例的toString()表示。FileInputStream

您必须从流中读取字节并将它们存储在字节数组中。并且,出于性能原因,缓冲流:

BufferedInputStream itStrm = new BufferedInputStream(FileInputStream(
    "E:\\image\\56255254-flower.jpg"));

进一步阅读(剧透:内部解决方案)

于 2012-10-23T05:52:31.617 回答
0

您需要使用实例的read()方法而不是获取图像的内容。然后您就可以对其进行编码,并且应该可以按预期工作。FileInputStreamtoString()

就像是:

int c;
StringBuffer result = new StringBuffer("");
while((c = fileInputStream.read()) != -1)
{
    result .append((char)c);
}
于 2012-10-23T05:55:53.563 回答