2016-07-26 14 views
0

私はbase64イメージをGmail/Outlookで見ることができるファイルに変換しようとしています。現在、イメージを含むメールを既存のGmailに送信すると、イメージは消え、イメージ以外のすべてのテキストが表示されます。しかし、リンゴのメールで画像を見ることができます。私はいくつかの調査をしました、それはgmailがbase64の画像をブロックしたと言います。だから私ができる唯一の方法は、base64イメージを変換することです。Bufferedimage/ImageIO

 <img alt=3D"" src=3D"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANsA=AABpCAIAAAA848FpAAAF/0lEQVR4nO2c2ZXjOAxFnW5l4VCcWyeADGo+elqmiIXgI......=3D" /></div> 

バッファードimage/imageIOを使用して自分のコードを変更しましたが、電子メールを送信しても違いはありません。これに何か問題はありますか?または、base64イメージを表示する他の方法はありますか?

これは画像のマイコードです。

String _message = _n.getRichcontent(); 
    String[] _s = _message.split(","); 
    String message = _s[1]; 
    System.out.println(_s[1]); 

    // create a buffered image 
    BufferedImage image = null; 
    byte[] imageByte; 
    BASE64Decoder decoder = new BASE64Decoder(); 
    try { 
     imageByte = decoder.decodeBuffer(message); 
     ByteArrayInputStream bis = new ByteArrayInputStream(imageByte); 

     image = ImageIO.read(bis); 
     System.out.println("Reading complete."); 

     bis.close(); 

     // write the image to a file 
     File outputfile = new File("image.png"); 

     ImageIO.write(image, "png", outputfile); 
     System.out.println("Writing complete." + outputfile); 


    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("Error: "+e); 
    } 

これは、画像がメールに表示されるコードです。

_msg = _msg + _message + "<BR><BR>"; 

これはメールを送信するためのものです。

sendMail(_sender, _receipients, _subject, _msg); 

答えて

0

いいえ、直接的な方法はありません。すべてのために約31バイトです

<td style=background:#ddde22 /> 

:しかし...

は、HTMLの表は、画像の幅と画像の高さを持つ、すべての細胞は、このような異なる背景色を持っている想像してみてピクセル。

64x64イメージの場合、64 * 64 * 31バイト= 127kbがリアルカラーになります。

あなたはそれと一緒に暮らすことができますか?

もしそうなら、this discussion may help