我使用签名的Java小程序从用户的文件系统加载图像.
然后我想在applet运行的网站上显示这个图像.
我知道如何在applet和JavaScript之间进行通信,但我只使用字符串和数字作为参数.
如何处理图像对象以及如何在网站上显示它们?
如果需要,我可以转换applet中的格式以匹配JavaScript.
编辑:
我通过JSObject的调用将Image对象从java传递给了javascript. Chrome忽略了通话,Firefox崩溃了..
解决方法:
您可以将图像编码为Base 64,将其作为String传递给JS,并使用data:image / gif;表单URL以在网页中显示它.您需要“自己动摇”base 64编码器或查找API,因为J2SE没有内置的转换方法.1
它可能在HTML中看起来像这样.
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7"
width="16" height="14" alt="embedded folder icon">
例如.取自Inline Images with Data URLs.
>在后来的JRE上(一旦引入了JAXB),请使用这样的DatatypeConverter.printBase64Binary(byte[])
:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ImageIO.write(image, "png", baos);
} catch (IOException e) {
showError(e);
e.printStackTrace();
}
String imageString = "data:image/png;base64," +
DatatypeConverter.printBase64Binary(baos.toByteArray());