将applet保存为图像

时间:2014-05-06 21:04:09

标签: java image applet

所以我对applet并不是很有经验,但我有一个基于用户输入绘制内容的applet,保存applet创建的图像文件最简单的方法是什么? (最好是在用户点击" applet"然后喜欢"保存图片")

2 个答案:

答案 0 :(得分:1)

  

我有一个根据用户输入绘制内容的小程序

让applet使用页面上现有的<img ..>元素。每当图像发生变化时,请对image as Base-64进行编码并将其写入img.src属性。

applet需要使用applet可用的Java / JavaScript桥来操纵托管它的网页的文档对象模型。

  

..保存applet创建的图像文件最简单的方法是什么? (最好在用户点击“applet”之后再点击“保存图片”)

如果浏览器支持保存基本64位编码图像,则应自动提供该功能。


当然,如果使用Java Web Start部署applet,则可以使用JNLP API的FileSaveService

答案 1 :(得分:0)

我很确定Java库不支持这种方式。最有可能你需要做的就是自己制作一个图像文件 - 为了简单起见,让我们说一个位图 - 迭代像素并根据你的图像数据自己设置它们,或多或少地制作你自己的渲染引擎。

澄清一下,这意味着您必须保存用户的输入,并使用它来构建图像文件以及屏幕上的图像。

这是我的意思的伪代码示例:

ArrayList rules;  //records the user's inputs used to make the image  
                  //e.g. "red line from pixel (3,5) -> (5,8)"
Image savedImage; //open an image file - make sure to set its dimensions to the
                  //dimensions of the image on-screen
for (x = 0 -> savedImage.width)
{
  for (y = 0 -> savedImage.height)
  {
    for (r = 0 -> rules.size())
    {
      if (rules.get(r).affects(x,y)) //checking to see if this input
      {                              //affected this pixel
        savedImage.pixelAt(x,y).apply(rules.get(r)); //if so, apply the rule's
                                                     //effect to this pixel
      }
    }
  }
}

我非常确定您自己必须制作规则类和Image类,但它们不应该太难制作。

虽然我想指出我假设您希望以编程方式执行此操作,以便在用户完成时或用户告诉applet保存图像时自动保存图像。