如何使用ImageSharp清除图像的EXIF数据?

3

我找到了一个GitHub问题,展示了如何通过将图像的ExifProfile设置为null来删除图像的Exif数据:

 SixLabors.ImageSharp.Image image = Image.Load(imagePath);

 //remove exif
 image.Metadata.ExifProfile = null;
    
 //resize
 image.Mutate(x => x.Resize(width, height));
    
 //save
 SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder();
    
 encoder.Quality = 30; 
                        
 image.Save(thumbnailPath, encoder);

但是我尝试了这种方法,似乎并没有起作用——保存的JPEG文件大小相同,并且在我的操作系统中检查时,它们显示了所有相机的EXIF设置。当我对另一个实用程序创建的图像进行相同的检查时,操作系统不会显示所有的EXIF设置……所以我倾向于认为这个ImageSharp技术没有正确地清除它们。

有什么想法吗?

https://github.com/SixLabors/ImageSharp/issues/400


1
如果将“ExifProfile”属性设置为null无效,而您仍然在缩略图保存中获取exif数据,则请在github存储库https://github.com/SixLabors/ImageSharp/issues/new/choose上提出问题,因为这是一个错误,这就是您需要做的...请提供任何复制步骤,包括代码示例和样本图像(尽可能多),因为这将使调查更容易。 - tocsoft
可以的。是的,每次都可以通过我的源图像和输出图像进行再现。 - mdelvecchio
1个回答

8

原来元数据有两种不同类型 - EXIF和XMP。需要将这两个对象都设置为null才能将它们全部删除:

image.Metadata.ExifProfile = null;
image.Metadata.XmpProfile = null;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接