要使用Java ImageIO庫實現圖像旋轉,可以通過以下步驟進行操作:
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.ImageIO;
rotateImage
的方法,它接收一個BufferedImage
對象和一個表示旋轉角度的double
值。public static BufferedImage rotateImage(BufferedImage originalImage, double angle) {
// 獲取原始圖像的寬度和高度
int width = originalImage.getWidth();
int height = originalImage.getHeight();
// 計算旋轉后的圖像的新尺寸
Rectangle newSize = getRotatedSize(new Rectangle(width, height), angle);
// 創建一個新的BufferedImage對象,用于存儲旋轉后的圖像
BufferedImage rotatedImage = new BufferedImage(newSize.width, newSize.height, originalImage.getType());
// 創建一個Graphics2D對象,用于繪制旋轉后的圖像
Graphics2D g2d = rotatedImage.createGraphics();
// 設置旋轉中心點
g2d.translate((newSize.width - width) / 2, (newSize.height - height) / 2);
// 旋轉圖像
g2d.rotate(Math.toRadians(angle), width / 2, height / 2);
// 繪制原始圖像到旋轉后的圖像上
g2d.drawImage(originalImage, 0, 0, null);
// 釋放資源
g2d.dispose();
// 返回旋轉后的圖像
return rotatedImage;
}
private static Rectangle getRotatedSize(Rectangle originalSize, double angle) {
// 計算旋轉后的圖像的新尺寸
double radians = Math.toRadians(angle);
double sin = Math.abs(Math.sin(radians));
double cos = Math.abs(Math.cos(radians));
int newWidth = (int) (originalSize.width * cos + originalSize.height * sin);
int newHeight = (int) (originalSize.width * sin + originalSize.height * cos);
return new Rectangle(newWidth, newHeight);
}
rotateImage
方法,并將旋轉后的圖像保存到文件中。public static void main(String[] args) {
try {
// 讀取原始圖像
File inputFile = new File("input.jpg");
BufferedImage originalImage = ImageIO.read(inputFile);
// 旋轉圖像
double angle = 45; // 旋轉角度(以度為單位)
BufferedImage rotatedImage = rotateImage(originalImage, angle);
// 將旋轉后的圖像保存到文件中
File outputFile = new File("output.jpg");
ImageIO.write(rotatedImage, "jpg", outputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
這樣,你就可以使用Java ImageIO庫實現圖像旋轉操作了。請注意,這個示例僅適用于本地文件系統。如果你需要從其他來源(如URL或數據庫)讀取圖像,你需要相應地修改代碼。