我正在使用签名的Java小程序从用户的文件系统加载图像。 然后,我想在运行小程序的网站中显示此图像。
我知道如何在applet和JavaScript之间进行通信,但是我只使用字符串和数字作为参数。
如何处理图像对象,如何在网站上显示它们?
如果需要,我可以在applet中转换格式以匹配JavaScript。
编辑: 我通过JSObject的调用将Image对象从Java传递给了javascript。Chrome会忽略该呼叫,而Firefox崩溃。
您可以将图像编码为Base 64,将其作为字符串传递给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">
EG取自带有数据URL的嵌入式图像。
在以后的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());