Image processing

现在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;
	}
}

感谢大神的代码。