我一直试图这样做一个星期。每次我都尝试过失败的东西。所以我转向复制其他代码......他们说代码适用于他们......但它失败了。
我最终喜欢的代码来自以下内容。
How To Crop Image in Java (StackOverflow)
那时我就基本上复制了这个。
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
public class ImageEditor {
public BufferedImage crop(BufferedImage src, Rectangle rect) {
BufferedImage dest = new BufferedImage(rect.getWidth(), rect.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = dest.getGraphics();
g.drawImage(src, 0, 0, rect.getWidth(), rect.getHeight(), rect.getX(), rect.getY(), rect.getX() + rect.getWidth(), rect.getY() + rect.getHeight(), null);
g.dispose();
return dest;
}
}
此代码出现以下错误。
提前感谢您的帮助!
答案 0 :(得分:3)
第一个错误表示无法找到方法drawImage(BufferedImage,int,int,double,double,double,double,double,double,<nulltype>)
。所有这些双精度值都来自一个矩形,对吗?
Graphics有drawImage(BufferedImage,int,int,int,int,int,int,int,int,ImageObserver)
方法。那可能是你想要使用的那个。您应该使用int值。
第二个错误表示无法找到构造函数BufferedImage(double, double, int)
。这是一个类似的问题。
Rectangle公开int精度字段x
,y
,height
和width
。你能用它们吗?例如,rect.x
而不是rect.getX()