【问题标题】:Pass image from java applet to html将图像从 java 小程序传递到 html
【发布时间】:2012-04-24 18:11:56
【问题描述】:

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

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

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

如果需要,我可以转换小程序中的格式以匹配 JavaScript。

编辑:
我通过来自 JSObject 的调用将 Image 对象从 java 传递到 javascript。 Chrome 忽略了调用和 Firefox 崩溃..

【问题讨论】:

    标签: javascript html applet parameter-passing


    【解决方案1】:

    【讨论】:

    • 我也看到了,但我想在 html 中显示图像而不是在小程序上打印它
    【解决方案2】:

    您可以将图像编码为 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">
    

    例如取自Inline Images with Data URLs

    1. 在后来的 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());
    

    【讨论】:

    • 嗯,这可能行得通。您对大图像 (1600x1200) 的性能有经验吗?这适用于 gif 等其他格式吗?
    • 1) 不,但除非是为了动画,否则应该没问题。 2) 我相信是的。
    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 2014-02-09
    • 2012-10-02
    • 2013-11-24
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多