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[]バイト=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 に答える