将 BufferedImage旋转90度
时间: 2023-08-25 07:53:33 浏览: 58
要将 BufferedImage 旋转 90 度,可以使用 AffineTransform 类来实现。以下是一个示例代码:
```java
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageRotationExample {
public static void main(String[] args) {
try {
// 读取图像文件
File inputFile = new File("input.jpg");
BufferedImage inputImage = ImageIO.read(inputFile);
// 创建旋转角度为90度的AffineTransform对象
AffineTransform affineTransform = new AffineTransform();
affineTransform.rotate(Math.toRadians(90), inputImage.getWidth() / 2, inputImage.getHeight() / 2);
// 创建旋转后的图像
BufferedImage outputImage = new BufferedImage(inputImage.getHeight(), inputImage.getWidth(), inputImage.getType());
// 进行图像旋转
Graphics2D g2d = outputImage.createGraphics();
g2d.drawImage(inputImage, affineTransform, null);
g2d.dispose();
// 保存旋转后的图像文件
File outputFile = new File("output.jpg");
ImageIO.write(outputImage, "jpg", outputFile);
System.out.println("图像旋转成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述示例中,我们首先读取名为 `input.jpg` 的图像文件,并创建一个旋转角度为 90 度的 AffineTransform 对象。然后,我们创建了一个与输入图像宽高互换的 BufferedImage 对象,用于存储旋转后的图像。接下来,我们使用 Graphics2D 对象来绘制旋转后的图像,并将其保存为名为 `output.jpg` 的新图像文件。
请注意,上述代码假设输入图像是正方形,如果输入图像不是正方形,则旋转后的图像可能会被裁剪或留下空白区域。如果您希望保留完整的图像内容,请在创建旋转后的 BufferedImage 对象时,考虑调整宽高以适应旋转后的图像内容。