我正在尝试创建一个快速的图像生成器,它可以进行大量的 2d 转换和形状渲染,所以我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行我的所有绘图。我现在主要关心的是制作速度非常快,所以我正在创建一个这样的 BufferedImage:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage bImage = gc.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
Graphics2D graphics = bImage.createGraphics();
但是,如果我这样做:
System.out.println(bImage.getCapabilities(gc).isAccelerated());
输出始终为false,即使我使用 -Dsun.java2d.opengl=True 启动 JVM 打印该行:
OpenGL pipeline enabled for default config on screen 0
我正在做一个 BufferedImage 因为最后我想用 ImageIO.write(bImage, "PNG", file); 将它保存到一个 PNG 文件中。
我可以创建一个 VolatileImage,它会说它已加速,但 ImageIO 在尝试保存时不喜欢它,说该图像无法转换为 RenderedImage。关于如何获得可以存储到磁盘的加速图像的任何想法?此外,我不想创建 VolatileImage 并将副本复制到 BufferedImage 以保存,因为我的图像非常大,我会遇到内存不足的问题......