我的意思是把它作爲註釋發佈在this question,但我沒有足夠的代表,但我沒有看到別的方法,只是提出了一個新問題(儘管看起來有點多餘)。從JSF bean傳遞圖像到Applet
無論如何,我試圖解決skuntsel寫道,但反向:我編碼的圖像,並從豆到JavaScript方法發送它(我使用ICEfaces的,所以我把它叫做這樣JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), functionCall)
)。我在Applet中獲得了編碼的字符串,但是當我嘗試解碼它時,沒有任何反應,它後面的代碼無法訪問。
我錯過了什麼嗎?提前致謝!
編輯:這裏是我使用的代碼。
在豆:(通過點擊一個按鈕觸發方法)
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();
}
}
你的問題還不清楚。擴大上下文並將代碼添加到問題中。而且,是的,只需在您提到的答案中恢復邏輯即可。 – skuntsel
添加了代碼:) – v30