EXIF(Exchangeable image file format), 记录了数位照片许多属性和拍摄数据,其中甚至可能包含类似 GPS 定位、图片产生日期等隐私信息。因此我们会希望使用者上传的图片,不会不经意的透漏一些隐私消息 , 比如微博、微信、QQ空间等产品都会在用户上传图片时就会抹去这些照片的 EXIF 信息。本文介绍使用C#移除图片文件的 EXIF 信息方法。
下面的代码实现将使用 ImageSharp 移除照片的 GPS信息或者一些拍摄数据,并且重新生成一张已经移除过这些隐私信息的照片:
using static System.Net.Mime.MediaTypeNames;
using var image = Image.Load<Rgba64>(file);
if (image.Metadata.ExifProfile != null)
{
foreach (var exifValue in image.Metadata.ExifProfile.Values)
{
if (exifValue.Tag is ExifTag<string>)
{
exifValue.TrySetValue(null);
}
}
}
image.Metadata.IptcProfile = null;
image.Metadata.XmpProfile = null;
image.Save(file);
注意:本方法只是简单的清除掉一些隐私 Tag,如果需求较为复杂,那么建议使用专门的 Exif 操作库。