如何为在线用户提供保存/下载我使用Java Applet创建的图像?

时间:2013-01-18 00:48:59

标签: java image applet

我之前曾在这里问了一个问题,并得到了很多知识渊博的人的一些帮助和建议,所以我想我会再次尝试这个问题,而我正在考虑另一个编程问题。

这是基本问题。我创建了一个小型Java小程序,它可以获取四个图像并将它们组合成一个大图像。更具体地说,我将四张图像合并为一张大图像,打印出来后将折叠成贺卡。一切正常,但我将把applet嵌入我的网站,所以我会让用户从我网站上的图像列表中选择他们想要的四个图像,然后根据他们的选择我将创建大图。

现在这里有麻烦...当我创建大图像时,我希望用户能够下载它。是否有必要创建一个签名的小程序?如果是这样,我该如何签署我的applet?或者,applet以某种方式只能以这种方式显示图像,以便用户可以右键单击图像并将其保存到文件系统中。任何意见/建议将不胜感激!!

3 个答案:

答案 0 :(得分:3)

如果图像是从applet类本身下载的相同位置加载的,则无需对applet进行签名。但是,会出现问题,从未签名的小程序本地保存图像。对于该功能,您需要对小程序进行签名。

或者,对于在Web浏览器中运行的applet,可以使用以下命令在单独的浏览器框架中显示图像:

applet.getAppletContext().showDocument(imageURL, frameTarget);

从这个页面/框架,图像可以是saved locally using Javascript

答案 1 :(得分:1)

根据Java和浏览器版本,我看到3个选项:

  1. 对Jar进行数字签名,并鼓励最终用户信任经过数字签名的代码。
  2. 点击应用程序,使用Java Web Start进行部署,并使用JNLP API服务保存生成的图像。这可以使用自Java 1.2以来的自由浮动applet,或者自1.6.0_10 +以来的嵌入式applet。这是一个demo. of the file servicesGIFanim还提供了一个嵌入式小程序,它使用这些服务来保存动画GIF。
  3. 将图像编码为Base64 URL,直接在网页中显示。这需要更新的浏览器,旧浏览器对图像大小设置了32Kb限制。 J2SE最近只添加了一个方法,可以为我们进行转换。请参阅DatatypeConverter.printBase64Binary(byte[])

答案 2 :(得分:0)

要将文件写入文件系统,必须对applet进行签名。

然而,自签名小程序非常容易,除非您的用户非常谨慎,否则自签名将起作用。

按照这些说明签署小程序。 P.S这些说明适用于Linux设置。您可能需要在Windows中设置环境变量。

Jar signing link