Yod*_*oda 7 java bufferedimage toolkit scale
我想得到一个缓冲图像的缩放实例,我做了:
public void analyzePosition(BufferedImage img, int x, int y){
img = (BufferedImage) img.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH);
....
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
at ImagePanel.analyzePosition(ImagePanel.java:43)
Run Code Online (Sandbox Code Playgroud)
然后我想要转换为ToolkitImage使用getBufferedImage我在其他文章中读到的方法.问题是没有类,例如sun.awt.image.ToolkitImage我无法投射它,因为Eclipse甚至没有看到这个类.我用Java 1.7和jre1.7.

Hov*_*els 13
您可以使用TookitImage创建一个新图像,一个BufferedImage.
Image toolkitImage = img.getScaledInstance(getWidth(), getHeight(),
Image.SCALE_SMOOTH);
int width = toolkitImage.getWidth(null);
int height = toolkitImage.getHeight(null);
// width and height are of the toolkit image
BufferedImage newImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics g = newImage.getGraphics();
g.drawImage(toolkitImage, 0, 0, null);
g.dispose();
// now use your new BufferedImage
Run Code Online (Sandbox Code Playgroud)
BufferedImage#getScaledInstance实际上继承自java.awt.Image并且只保证它会返回 anImage所以我会说在这种情况下尝试假设底层返回类型不是一个好主意。
getScaledInstance 也不是通常最快或质量最好的方法
要缩放一个BufferedImage本身,您有许多不同的选择,但大多数只是简单地将原始图像重新绘制到另一个图像上,在过程中应用某种缩放。
例如:
有关 的更多详细信息getScaledInstance,请阅读Image.getScaledInstance() 的危险
| 归档时间: |
|
| 查看次数: |
16742 次 |
| 最近记录: |