使用MagickImage在C#中将图片方向调整为正常状态
使用C# MagickImage处理图片Exif方向问题
前置准备
先通过NuGet安装Magick.NET包,常用版本比如Magick.NET-Q16-AnyCPU,也可根据系统环境选择Q8/x64等适配版本。
方法一:自动调整图片为正常状态并重置方向信息
这个方法会根据图片的Exif方向标签,自动旋转/翻转图片到正常显示状态,同时清除原方向标签,避免后续打开时再次被错误旋转。
using ImageMagick; public void NormalizeImageOrientation(string inputImagePath, string outputImagePath) { using (var magickImage = new MagickImage(inputImagePath)) { // AutoOrient()自动处理旋转/翻转,并将Exif方向重置为正常(ID=1) magickImage.AutoOrient(); magickImage.Write(outputImagePath); } }
说明:AutoOrient()是MagickImage提供的便捷方法,它会读取Exif中的Orientation值(比如3=旋转180°、6=顺时针旋转90°等),对图片像素做对应变换,之后将Orientation设置为1(正常方向),彻底解决方向异常问题。
方法二:直接移除Exif方向信息(不修改图片像素)
如果图片本身像素已经是正常状态,只是残留了错误的Exif方向标签导致显示异常,可以直接移除该标签,不改动图片内容。
using ImageMagick; public void RemoveExifOrientationTag(string inputImagePath, string outputImagePath) { using (var magickImage = new MagickImage(inputImagePath)) { var exifProfile = magickImage.GetExifProfile(); if (exifProfile != null) { // 移除Exif中的Orientation标签(标签ID为274) exifProfile.RemoveValue(ExifTag.Orientation); magickImage.SetExifProfile(exifProfile); } magickImage.Write(outputImagePath); } }
说明:此方法仅删除Exif元数据里的方向标识,不会对图片像素做任何修改,适合处理那些被错误添加方向标签的正常图片。
内容的提问来源于stack exchange,提问作者Dhatri Maddipati
相关产品推荐
相关产品推荐

