Java 如何创建大型SWT图像?

Java 如何创建大型SWT图像?,java,image,swt,eclipse-rcp,Java,Image,Swt,Eclipse Rcp,在我的EclipseRCP应用程序中,我需要创建一个尺寸为30000x1000 px或更大的映像。这幅图像是一种表现。使用标准的图像创建方法,它会出现不同的问题:OutOfMemory、SWTError-IllegalArgument或我的电脑停止响应(顺便说一句,它的Windows7、64位、4 RAM客户端的笔记本电脑速度要慢得多,但图片仍然需要创建)。以下是一段代码片段: private Image getNattableImageRepresentation(final Display

在我的EclipseRCP应用程序中,我需要创建一个尺寸为30000x1000 px或更大的映像。这幅图像是一种表现。使用标准的图像创建方法,它会出现不同的问题:OutOfMemory、SWTError-IllegalArgument或我的电脑停止响应(顺便说一句,它的Windows7、64位、4 RAM客户端的笔记本电脑速度要慢得多,但图片仍然需要创建)。以下是一段代码片段:

private Image getNattableImageRepresentation(final Display display) {
        final Rectangle totalGridArea = getTotalGridArea(); //this returns Rectangle(0,0,30000,10000)
        setGridLayerSize(totalGridArea);
        final Image nattableImage = new Image(display, totalGridArea);
        final GC nattableGC = new GC(nattableImage);
        gridLayer.getLayerPainter().paintLayer(gridLayer, nattableGC, 0, 0, totalGridArea, configRegistry);//nattable API, which draws an image into a specified gc
        restoreGridLayerState();
        return nattableImage;
    }
    return null;
}
是否有任何技巧可以创建如此巨大的图像或可能是API?Java高级成像Api是否适合此用途


非常感谢您的建议。

对于这样的图像处理来说是一个不错的工具。。新的CG绝对不是这样的。。如果您要将所有备用映像连接到大映像,那么应该不会有任何问题。

有一个简单的解决方案,用于在Java中存储较大的映像。BigBuffereImage以非常快速的方式将图像存储在硬盘上:


您想将表保存到图像文件吗?这篇文章在我研究一些图像问题时一直对我很有帮助-谢谢您的文章,我一定会看一看。不,我不需要将表格保存到文件中,我实际上需要获得一个ImageData对象,以便能够使用回形针ImagePrint打印NatTable。Sa基本上,我需要打印表格。所以解决方法可能是将图像网格“捕捉”成更小的图像,然后通过一些命令行实用程序“连接”它们;]。。这是一个很好的图像处理工具。。新的CG绝对不是这样的。。您有哪些与打印相关的问题。。?如果你将所有的备用图像连接到一个大的图像中,应该没有任何问题..排版工作如预期的那样,但是看起来,它消耗了相当多的内存。我尝试过ImageMagick的im4java接口,但这不应该是原因。当合成图像加载回应用程序时,Java仍然无法处理它。该映像只有10Mb(15000x400),但由于SWT错误而失败,这是令人伤心的。它肯定不仅仅是10Mb(它是压缩的),每32位有15000x400=6M像素,但每个映像上都有巨大的开销,特别是当SWT使用一些依赖于平台的句柄时。。但你是对的,不管怎么说,这很令人伤心。。