如何使用C#调整自带方向属性的图像文件
现在ios和android手机拍的照会有个方向参数,存在exif数据中,有时候直接用程序读取相片数据,显示出来的图像可能就不是正的了。所以有时候做相片的图像处理的时候,会需要用到根据照片的方向参数翻转图像的功能。
上网搜了一下,参考网上大神的代码,写了一个方法,记录下来以便以后查阅。
这段代码在.net core上可能运行不了,可能需要参考安装Magick.NET-Q8-AnyCPU这个图像处理的包。
private void RotateImage(Image img)
{
var exif = img.PropertyItems;
byte orien = 0;
var item = exif.Where(m => m.Id == 274).ToArray();
if (item.Length > 0)
orien = item[0].Value[0];
switch (orien)
{
case 2:
img.RotateFlip(RotateFlipType.RotateNoneFlipX);//horizontal flip
break;
case 3:
img.RotateFlip(RotateFlipType.Rotate180FlipNone);//right-top
break;
case 4:
img.RotateFlip(RotateFlipType.RotateNoneFlipY);//vertical flip
break;
case 5:
img.RotateFlip(RotateFlipType.Rotate90FlipX);
break;
case 6:
img.RotateFlip(RotateFlipType.Rotate90FlipNone);//right-top
break;
case 7:
img.RotateFlip(RotateFlipType.Rotate270FlipX);
break;
case 8:
img.RotateFlip(RotateFlipType.Rotate270FlipNone);//left-bottom
break;
default:
break;
}
}
感谢大神的代码。