C#遍历文件夹所有图像以中心点转90°
时间: 2024-12-24 15:39:39 浏览: 9
在C#中,遍历文件夹的所有图像并旋转它们通常涉及到I/O操作、图像处理库(如System.Drawing.Image或AForge.NET)以及递归函数来处理目录结构。这里是一个基本的示例,展示如何使用DirectoryInfo类和Image类来实现这个功能:
```csharp
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class ImageRotationHelper
{
public static void RotateImagesInFolder(string folderPath)
{
// 检查路径是否有效
if (!Directory.Exists(folderPath))
throw new ArgumentException("The specified folder does not exist.");
// 获取目录下的所有图片文件
var imageFiles = Directory.GetFiles(folderPath, "*.jpg;*.jpeg;*.png;*.gif", SearchOption.AllDirectories);
foreach (string filePath in imageFiles)
{
try
{
// 加载图片
using (var img = Image.FromFile(filePath))
{
// 计算图片的中心点
int centerX = img.Width / 2;
int centerY = img.Height / 2;
// 创建一个新的Bitmap实例用于存储旋转后的图片
Bitmap rotatedImg = new Bitmap(img.Width, img.Height);
// 创建Graphics对象,并设置其上下文
Graphics g = Graphics.FromImage(rotatedImg);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// 以中心点顺时针旋转90度
g.RotateTransform(90, centerX, centerY);
// 将原图绘制到旋转后的Bitmap上
g.DrawImage(img, new Point(0, 0));
// 保存旋转后的图片
rotatedImg.Save(filePath, ImageFormat.Jpeg); // 或者其他你想要的格式
}
}
catch (Exception ex)
{
Console.WriteLine($"Error rotating file {filePath}: {ex.Message}");
}
}
}
}
// 调用方法
string folderToRotate = "path/to/your/folder";
ImageRotationHelper.RotateImagesInFolder(folderToRotate);
阅读全文