【发布时间】:2012-11-16 07:32:53
【问题描述】:
StackOverflow 上已经有类似link 的问题,并且接受的答案是“casting”:
Image image = ImageIO.read(new File(file));
BufferedImage buffered = (BufferedImage) image;
在我的程序中我尝试:
final float FACTOR = 4f;
BufferedImage img = ImageIO.read(new File("graphic.png"));
int scaleX = (int) (img.getWidth() * FACTOR);
int scaleY = (int) (img.getHeight() * FACTOR);
Image image = img.getScaledInstance(scaleX, scaleY, Image.SCALE_SMOOTH);
BufferedImage buffered = (BufferedImage) image;
不幸的是我得到了运行时错误:
sun.awt.image.ToolkitImage 无法转换为 java.awt.image.BufferedImage
显然投射不起作用。
问题是:将 Image 转换为 BufferedImage 的正确方法是什么(或是否存在)?
【问题讨论】:
-
如果你想缩放缓冲图像,试试这个试试这个 [stackoverflow.com/questions/4216123/… [1]: stackoverflow.com/questions/4216123/…
-
为了记录,不是编译器在说这个。您实际上看到的是运行时错误……而不是编译错误。
-
你是对的。感谢您指出了这一点。我会相应地编辑问题。
-
@user902383 即使他们没有直接回答我的问题 - 这些也是很好的解决方案。
-
对 OP 的小事:方法
ImageIO.read(File)通过其签名返回BufferedImage。 (Reference) 无需先赋值给Image变量,然后再转换为BufferedImage类型。这可能会使阅读您的代码的人感到困惑。
标签: java image casting bufferedimage