在小程序中上载图像时Java堆大小问题

在小程序中上载图像时Java堆大小问题,java,eclipse,swing,image-processing,applet,Java,Eclipse,Swing,Image Processing,Applet,我的任务是压缩图像,重新调整其大小,最后将水印添加到该图像中。我面临的问题是,在向该图像写入水印时,Eclipse抛出了一个“Java堆大小错误”错误 在Stackoverflow.com的帮助下,我通过在Eclipse VM中添加-Xmx1024m来增加Java虚拟内存,从而解决了这个问题。但当我在浏览器中运行这个小程序时,我在未完成的ie中的任务,图像处理在水印写入区域进行。我已经将Java控制面板中的Java虚拟内存大小更改为-Xmx1024m,但仍然面临同样的问题 欢迎提供任何帮助或建议

我的任务是压缩图像,重新调整其大小,最后将水印添加到该图像中。我面临的问题是,在向该图像写入水印时,Eclipse抛出了一个“Java堆大小错误”错误

在Stackoverflow.com的帮助下,我通过在Eclipse VM中添加-Xmx1024m来增加Java虚拟内存,从而解决了这个问题。但当我在浏览器中运行这个小程序时,我在未完成的ie中的任务,图像处理在水印写入区域进行。我已经将Java控制面板中的Java虚拟内存大小更改为-Xmx1024m,但仍然面临同样的问题

欢迎提供任何帮助或建议。提前谢谢

下面给出了我的代码工作和面临的问题

public BufferedImage setWaterMark(File imageFile, String watermark, String fontName, int fontSize, float opaque,int offsetSize,int intAngle,int intChkbox) throws Exception {


    ImageIcon icon = new ImageIcon(imageFile.getPath());
     System.out.println("Reading Image at Water mark");


     BufferedImage bufferedImage = new BufferedImage(
                   icon.getIconWidth(), icon.getIconHeight(),
                   BufferedImage.TYPE_INT_RGB);


   Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
   g2d.drawImage(icon.getImage(), 0, 0, null);

   g2d.setFont(new Font(fontName, Font.BOLD, fontSize));
   g2d.drawImage(icon.getImage(), 0, 0, null);
   AlphaComposite alpha = AlphaComposite.getInstance(
           AlphaComposite.SRC_OVER, opaque);
   g2d.setComposite(alpha);
   g2d.setColor(Color.white);
   g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                   RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
发件人:

文件,如果小程序是由启动的


尝试上述步骤,看看是否出现相同的错误。

谢谢您的帮助。我现在就试试。我在处理长宽和高图像(最小10000X5000)时面临这个问题。不管怎样,我会在尝试了这个解决方案后回到你身边。以上是我与@Andrew ThomsonGlad合作过的小程序代码,您已将其排序。:)在我的本地机器中整理。在客户端的机器和浏览器中仍在寻找解决方案。。什么?您引用的applet元素也应该在客户端的浏览器中工作,除非它们运行的是Java的古老版本(我认为该参数是在Java1.5中引入的)!当我在Eclipse中运行这个程序时,这并不是一个问题,我已经完成了这个过程并且成功了。真正的问题是,当我在客户端浏览器中运行此小程序时,我会被击中:-(顺便说一句:虽然这可能对制作小程序的人有效,但对最终用户无效。您将在第1点丢失它们。如果您使用
appletviewer
运行小程序,则将
-J-mx1g
作为参数。也就是说,该命令看起来像->
appletviewer-J-mx64m
@Sujai-我正在为客户端p执行此操作。)仅限用途。使我的小程序签名并实际运行良好。唯一的问题是当图像宽度和高度超过10000+时,java堆大小问题会在读取icon.getIconWidth()和icon.getIconHeight()时完全停止进程。在本地时,我可以通过更改Eclipse运行时虚拟机来修复它,并且我尝试通过更改客户机的Java控制面板虚拟机来在客户机浏览器中修复此问题。但在某些情况下,它工作,在某些情况下不工作。对于Java(32位)它可以工作,但对于Java它不工作。只是确认一下。客户端可能正在使用浏览器打开html文件。对。如果是,请在appletviewer中尝试上述命令,并通过appletviewer打开html。
public BufferedImage setWaterMark(File imageFile, String watermark, String fontName, int fontSize, float opaque,int offsetSize,int intAngle,int intChkbox) throws Exception {


    ImageIcon icon = new ImageIcon(imageFile.getPath());
     System.out.println("Reading Image at Water mark");


     BufferedImage bufferedImage = new BufferedImage(
                   icon.getIconWidth(), icon.getIconHeight(),
                   BufferedImage.TYPE_INT_RGB);


   Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();
   g2d.drawImage(icon.getImage(), 0, 0, null);

   g2d.setFont(new Font(fontName, Font.BOLD, fontSize));
   g2d.drawImage(icon.getImage(), 0, 0, null);
   AlphaComposite alpha = AlphaComposite.getInstance(
           AlphaComposite.SRC_OVER, opaque);
   g2d.setComposite(alpha);
   g2d.setColor(Color.white);
   g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                   RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
1. open your .java file that contains the main().
2. Right click -> Select "Run As"-> "Run Configuration".
3. In the resulting Screen, under "Java Application" see if there exist ur already executed entry.If not Right click on "Java
Application" to create one.
4. Select that entry
5. Select "Arguments" tab.
6. Under "VM Argumets" area, type `-Xmx1g`
7. click Apply followed by Run button.