【发布时间】:2022-01-23 16:31:11
【问题描述】:
我创建 Image 和 Graphics2D 对象:
image = createImage(width, height);
buffer = (Graphics2D) image.getGraphics();
那么为什么这段代码不起作用:
image =image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
buffer = (Graphics2D) image.getGraphics();
它抛出:
线程“AWT-EventQueue-0”中的异常 java.lang.UnsupportedOperationException:getGraphics() 对使用 createImage(producer) 创建的图像无效 在 java.desktop/sun.awt.image.ToolkitImage.getGraphics(ToolkitImage.java:310)
我不确定我是否理解它,但似乎使用 createImage() 方法创建的 Image 对象和使用 getScaledInstance() 创建的 Image 对象不相等。是否有任何选项可以使用getScaledInstance() 仅调整image 的大小而不更改对象内的其他值,以便我可以调用getGraphics()?
【问题讨论】:
-
尝试使用
BufferedImage创建您的图像。如果您仍然有问题,请发布minimal reproducible example 来演示问题。 -
另一种选择是在原始
BufferedImage上进行所有图像处理,并将缩放保存到Image以供最后一步使用。
标签: java image awt image-scaling