在C#中,使用System.Drawing
命名空間處理圖像旋轉的方法如下:
using System.Drawing;
using System.Drawing.Drawing2D;
public static Image RotateImage(Image originalImage, float angle, Size newSize)
{
// 創建一個新的Bitmap對象,用于存儲旋轉后的圖像
Bitmap rotatedImage = new Bitmap(newSize.Width, newSize.Height);
// 創建一個Graphics對象,用于繪制旋轉后的圖像
using (Graphics graphics = Graphics.FromImage(rotatedImage))
{
// 設置高質量插值和平滑處理
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
// 創建一個Matrix對象,用于表示旋轉和平移操作
using (Matrix matrix = new Matrix())
{
// 將原點移動到圖像的中心
matrix.Translate(-originalImage.Width / 2, -originalImage.Height / 2);
// 應用旋轉操作
matrix.Rotate(angle);
// 將原點移回到圖像的左上角
matrix.Translate(newSize.Width / 2, newSize.Height / 2);
// 應用變換矩陣
graphics.Transform = matrix;
// 繪制旋轉后的圖像
graphics.DrawImage(originalImage, new Point(0, 0));
}
}
return rotatedImage;
}
// 加載原始圖像
Image originalImage = Image.FromFile("path/to/your/image.jpg");
// 計算旋轉后的新尺寸(這里我們使用最大邊作為新尺寸)
int maxSide = Math.Max(originalImage.Width, originalImage.Height);
Size newSize = new Size(maxSide, maxSide);
// 旋轉圖像
Image rotatedImage = RotateImage(originalImage, 45, newSize);
// 保存旋轉后的圖像
rotatedImage.Save("path/to/save/rotated_image.jpg");
注意:在實際應用中,你可能需要根據實際情況調整新尺寸的計算方式。