我尝试旋转BufferedImage并且它可以工作,但是旋转的图像在某些边上有黑色边框,我不知道为什么...... 旋转后我也觉得它变小了。
import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class example {
static void main(String[] args) throws IOException {
BufferedImage imgResc = ImageIO.read(new File("landscape.jpg"));
AffineTransform tx = new AffineTransform();
tx.rotate(Math.PI / 2, imgResc.getWidth() / 2, imgResc.getHeight() / 2);//(radian,arbit_X,arbit_Y)
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
BufferedImage rotatedImage = new BufferedImage(imgResc.getHeight(),imgResc.getWidth(),imgResc.getType());
op.filter(imgResc, rotatedImage);
ImageIO.write(rotatedImage, "JPEG", new File("rotated_90_right.jpg"));
}
}
上面是旋转图像的代码片段,就像我在网上找到的一样。
帮助会很棒!
编辑:
这是它应该是什么样子以及旋转后得到的结果: (1920 x 1200)
答案 0 :(得分:1)
如果按PI / 2旋转,则新图像的宽度为源的高度,高度为源的宽度,因此:
BufferedImage rotatedImage = new BufferedImage(imgResc.getHeight(),
imgResc.getWidth(),
imgResc.getType());
会更好。