如何在Java中旋转BuffereImage?
可能重复:如何在Java中旋转BuffereImage?,java,image,rotation,bufferedimage,affinetransform,Java,Image,Rotation,Bufferedimage,Affinetransform,可能重复: 我当前使用的方法(如下)会导致BuffereImage随着角度参数的减小而变得越来越失真 public static BufferedImage getRotatedImage(BufferedImage src, int angle) { if (src == null) { System.out.println("getRotatedImage: input image is null"); return null; }
我当前使用的方法(如下)会导致BuffereImage随着角度参数的减小而变得越来越失真
public static BufferedImage getRotatedImage(BufferedImage src, int angle) {
if (src == null) {
System.out.println("getRotatedImage: input image is null");
return null;
}
int transparency = src.getColorModel().getTransparency();
BufferedImage dest = gc.createCompatibleImage(
src.getWidth(), src.getHeight(), transparency );
Graphics2D g2d = dest.createGraphics();
AffineTransform origAT = g2d.getTransform();
AffineTransform rot = new AffineTransform();
rot.rotate(Math.toRadians(angle), src.getWidth()/2, src.getHeight()/2);
g2d.transform(rot);
g2d.drawImage(src, 0, 0, null);
g2d.setTransform(origAT);
g2d.dispose();
return dest;
随着角度变小,这种情况变得越来越扭曲
public static BufferedImage getRotatedImage(BufferedImage src, int angle) {
if (src == null) {
System.out.println("getRotatedImage: input image is null");
return null;
}
int transparency = src.getColorModel().getTransparency();
BufferedImage dest = gc.createCompatibleImage(
src.getWidth(), src.getHeight(), transparency );
Graphics2D g2d = dest.createGraphics();
AffineTransform origAT = g2d.getTransform();
AffineTransform rot = new AffineTransform();
rot.rotate(Math.toRadians(angle), src.getWidth()/2, src.getHeight()/2);
g2d.transform(rot);
g2d.drawImage(src, 0, 0, null);
g2d.setTransform(origAT);
g2d.dispose();
return dest;
听起来你在做:
img = base_img;
for (i = 0; i < n; i++) {
img = rotate(img, theta);
}
img=base\u img;
对于(i=0;i
当你真的想做的时候:
for (i = 0; i < n; i++) {
img = rotate(base_img, theta * n);
}
(i=0;i{
img=旋转(基准img,θ*n);
}
但我可能做出了不真实的假设。答案不多?在绘制新的旋转版本之前,您可以先看一看图像,还是先清除图像?