2016-09-28 12 views
0

私がGETリクエストからこの方法にフックアップコントローラがあります。httpリクエストでpngをレンダリングするには?

def renderPNG() { 
    URL url = new URL("https://absolute.url.png"); 
    BufferedImage img = ImageIO.read(url); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ImageIO.write(img, "png", baos); 
    InputStream is = new ByteArrayInputStream(baos.toByteArray()); 
    DataInputStream ds = new DataInputStream(is); 

    render file: ds, contentType: "image/png" 
} 

をしかし、私は応答して画像を得るとき、それは奇妙な文字でエンコードされています。どのようにしてイメージを取得し、デコードが正しく行われるので、ブラウザでレンダリングすることができますか?

+0

をレンダリングしたい画像

/* fetch the user image */ $.ajax({ url: "/controller/renderPNG", type: 'GET', cache: false, success: function (result) { document.getElementById('userImage').src = "data:image/png;base64," + result; } }); 

HTMLコードを取得し、この時点で、あなたはそれが画像のブラウザを伝える必要がありますバイト。 http://stackoverflow.com/questions/12041851/converting-bytes-to-an-image-for-drawing-on-a-html5-canvas – elixir

+0

わかりません – dopatraman

+0

コンテンツタイプのヘッダーを送信する必要があります:コンテンツタイプ:画像/ png'はこの言語でそれを行う方法はわかりませんが –

答えて

0

私はあなたの問題を解決するために、InputStreamをBase64.encodeのgetbyteコードからVeiwに変換します。

def renderPNG() { 
URL url = new URL("http://tineye.com/images/widgets/mona.jpg"); 
      BufferedImage img = ImageIO.read(url); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      ImageIO.write(img, "png", baos); 
      InputStream is = new ByteArrayInputStream(baos.toByteArray()); 
     render(Base64.encode(is?.getBytes())) 
} 

のJavaスクリプトコード私達は私が考える画像

<div><img id="userImage" src=""alt="User Image"></div> 
+0

レスポンスはコンテンツタイプを指定する必要があります – dopatraman

関連する問題