0

これをこの質問にコメントとして投稿するつもりでしたが、十分な担当者がいないため、新しい質問をする以外に方法がありませんでした(少し冗長に思えますが)。

とにかく、私はskuntselが書いた解決策を試しましたが、逆に: 画像をエンコードし、Bean から JavaScript メソッドに送信しました (icefaces を使用しているので、このように呼び出しましたJavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), functionCall))。アプレットでエンコードされた文字列を問題なく取得できますが、デコードしようとしても何も起こらず、それに続くコードに到達できません。

何か不足していますか?前もって感謝します!

編集:これが私が使用しているコードです。

Bean 内: (ボタンのクリックによってトリガーされるメソッド)

BufferedImage originalImage = acquireImage();
byte[] imageInByte = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
      ImageIO.write( originalImage, "png", baos );
      baos.flush();
      imageInByte = baos.toByteArray();
      baos.close();
} catch (IOException e) {
    e.printStackTrace();
   }

String imageAsString = Base64.encodeBase64String(imageInByte);
JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), functionCall);

Javascript の場合:

function getEncodedImage(image){
      var applet = document.getElementById("Applet");
      applet.decodeImage(image);
}

アプレットで:

public void decodeImage(String image) {
    System.out.println(image); //works
    byte[] imageByteArray = Base64.decodeBase64(image);
    System.out.println("something"); //doesn't print anything   
    InputStream is = new ByteArrayInputStream(imageByteArray);

    try {
        BufferedImage img = ImageIO.read(is);
        ImageIO.write(img, "png", new File("D:/image.png"));
            is.close();
    } catch (IOException e) {
        e.printStackTrace();
           }

}
4

1 に答える 1