tangguo

将图像从Java Applet传递到HTML

java

我正在使用签名的Java小程序从用户的文件系统加载图像。
然后,我想在运行小程序的网站中显示此图像。

我知道如何在applet和JavaScript之间进行通信,但是我只使用字符串和数字作为参数。

如何处理图像对象,如何在网站上显示它们?

如果需要,我可以在applet中转换格式以匹配JavaScript。

编辑:
我通过JSObject的调用将Image对象从Java传递给了javascript。Chrome会忽略该呼叫,而Firefox崩溃。


阅读 340

收藏
2020-11-09

共1个答案

小编典典

您可以将图像编码为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());
2020-11-09