使用PNGJ导出Netbeans Visual Library

时间:2013-09-26 06:26:20

标签: java netbeans png

我在SO帖子中发现了PNGJ。它提供的优势,特别是在内存效率方面,确实是我所寻找的。

现在我要实现它来从Netbeans Visual Library中捕获场景。向下滚动到docs我发现了这个声明:

  

不使用屏幕外缓冲区导出

     
    

前面的代码使用BufferedImage将图像存储在内存中。当场景很大时,可能会发生图像不适合内存的情况。因此,您必须使用Graphics2D实例和Scene.paint(Graphics2D)方法即时导出场景,例如PDF编写器,SVG文件编写器或元图形文件编写器。

  

是的,它确实与PNGJ合作:避免使用BufferedImage。但我不知道如何实现“你的Graphics2D”并将其发送给PNGJ。

任何建议都会有所帮助。 Thx提前。

1 个答案:

答案 0 :(得分:0)

我不熟悉Netbeans Visual Library,但我对“使用你的Graphics2D实例”避免使用BufferedImage的大量内存感觉不太清楚。在任何情况下,Scene.paint (Graphics2D)都会以任意顺序绘制所有对象,因此您需要拥有完整的目标,不能流式传输任何内容。它不是PNGJ的东西,Scene.paint()依靠java.awt.*来进行高级渲染,所以你无法摆脱它。

我能想到的唯一解决方法是尝试进行部分绘制,渲染成功的水平条纹(到BufferedImage)并用PNGJ编写它们(连接它们)。但我不确定这是否可行,而且性能可能会受到影响。

您还可以尝试一些“交换磁盘”图像实现,如DiskMemImage