C# 压缩图片后图片为什么会转了180度
时间: 2023-07-14 12:13:28 浏览: 46
图片被压缩后出现旋转的原因可能是由于图片的 EXIF 信息中包含了图片的旋转角度信息,而压缩后的图片可能没有正确处理这些信息导致的。
你可以尝试使用 C# 的 System.Drawing.Imaging 命名空间中的 Image 类来读取图片并进行压缩,同时在保存图片时清除掉图片的旋转角度信息。示例代码如下:
```
using System.Drawing;
using System.Drawing.Imaging;
public void CompressImage(string sourceFilePath, string targetFilePath, int quality)
{
using (var image = Image.FromFile(sourceFilePath))
{
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
using (var ms = new System.IO.MemoryStream())
{
// 清除旋转角度信息
var propItem = image.PropertyItems.FirstOrDefault(p => p.Id == 0x0112);
if (propItem != null)
{
image.RemovePropertyItem(propItem.Id);
}
// 压缩图片
image.Save(ms, GetEncoderInfo("image/jpeg"), encoderParameters);
var compressedImage = Image.FromStream(ms);
// 保存图片
compressedImage.Save(targetFilePath, ImageFormat.Jpeg);
}
}
}
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
var encoderInfos = ImageCodecInfo.GetImageEncoders();
return encoderInfos.FirstOrDefault(encoder => encoder.MimeType == mimeType);
}
```
这段代码中通过 Image.FromFile 方法读取图片,然后使用 EncoderParameters 对象设置图片的压缩质量,最后使用 Image.Save 方法保存图片。在保存图片之前,通过 PropertyItems 属性获取到图片的 EXIF 信息,找到旋转角度信息并删除,确保压缩后的图片不会出现旋转问题。