string sourceDir = @"D:\图片类\Holder特殊测试"; string targetDir = @"D:\图片类\压缩图片"; string[] imageFile = Directory.GetFiles(sourceDir, "*.jpg"); // 获取原始图片目录中的所有图片文件 foreach (string imagePath in imageFile)// 遍历每个图片文件,并进行压缩 { using (Bitmap image = new Bitmap(imagePath)) { int targetWidth = 800; int targetHeight =(int)(image.Height * ((float)targetWidth / image.Width)); Bitmap targetImage = new Bitmap(targetWidth, targetHeight); using (Graphics graphics = Graphics.FromImage(targetImage)) { graphics.DrawImage(image, new Rectangle(0, 0, targetWidth, targetHeight)); } var propItem = image.PropertyItems.FirstOrDefault(p => p.Id == 0x0112); if (propItem != null) { image.RemovePropertyItem(propItem.Id); } string targetPath = Path.Combine(targetDir, Path.GetFileName(imagePath)); targetImage.Save(targetPath, ImageFormat.Jpeg); }代码执行完成后图片旋转了180度,怎么让它不旋转
时间: 2023-07-15 12:11:12 浏览: 147
这个问题可能和图片的元数据有关。在你的代码中,已经尝试删除了图片的Orientation属性(0x0112),但似乎没有起作用。
你可以尝试使用其他方法来解决这个问题,如使用ExifLib库来读取和修改图片的元数据。以下是修改图片Orientation属性的示例代码:
```csharp
using ExifLib;
// ...
foreach (string imagePath in imageFile)
{
using (Bitmap image = new Bitmap(imagePath))
{
// 获取原始图片的Orientation属性
int orientation = 0;
using (ExifReader reader = new ExifReader(imagePath))
{
reader.GetTagValue(ExifTags.Orientation, out orientation);
}
int targetWidth = 800;
int targetHeight = (int)(image.Height * ((float)targetWidth / image.Width));
Bitmap targetImage = new Bitmap(targetWidth, targetHeight);
using (Graphics graphics = Graphics.FromImage(targetImage))
{
graphics.DrawImage(image, new Rectangle(0, 0, targetWidth, targetHeight));
}
// 在保存压缩后的图片前,设置Orientation属性为1(表示没有旋转)
using (var ms = new MemoryStream())
{
targetImage.Save(ms, ImageFormat.Jpeg);
ms.Seek(0, SeekOrigin.Begin);
using (var newImage = Image.FromStream(ms))
{
var propItem = newImage.PropertyItems.FirstOrDefault(p => p.Id == 0x0112);
if (propItem != null)
{
propItem.Value[0] = 1;
newImage.SetPropertyItem(propItem);
}
string targetPath = Path.Combine(targetDir, Path.GetFileName(imagePath));
newImage.Save(targetPath, ImageFormat.Jpeg);
}
}
}
}
```
这个示例代码中,使用ExifReader类获取原始图片的Orientation属性,并在保存压缩后的图片前,将该属性设置为1(表示没有旋转)。
阅读全文