如何从jpg和png图像中删除元数据

本文关键字:图像 删除 元数据 png jpg | 更新日期: 2023-09-27 18:11:51

这在c#中应该是一个相当琐碎的编程任务,但是在我搜索了一段时间后,我根本找不到任何有关如何删除元数据的内容。我想删除jpg和png图像元数据,如:文件夹路径,与共享,所有者和计算机。我的应用程序是MVC 4应用程序。在我的网站中,用户可以上传图像我通过这个ActionResult方法

获得这个图像
 if (image != null)
            {
                photo.ImageFileName = image.FileName;
                photo.ImageMimeType = image.ContentType;
                photo.PhotoFile = new byte[image.ContentLength];
                image.InputStream.Read(photo.PhotoFile, 0, image.ContentLength);
            }

Photo是模型中的一个属性,是这样的。

public byte[] PhotoFile { get; set; }

我想删除上述元数据或所有元数据的方法是使用如下代码

if (image != null)
            {
                image = image.RemoveAllMetaData; !!!
我不介意使用一些第三方的dll,只要它与。NET 4兼容。

谢谢。

如何从jpg和png图像中删除元数据

这里的'元数据'有点含糊——您的意思是需要查看器正确确定图像格式以便显示,仅保存原始图像数据的数据吗?或者,更有可能的是,您指的是通常通过EXIF标记添加的额外信息,例如作者、相机类型、GPS位置等?

如果你指的是像EXIF数据这样的东西,网上已经有很多关于如何添加/修改/删除EXIF标签的编程材料,甚至一些已经剥离这些标签的应用程序:例如http://www.steelbytes.com/?mid=30。

如果你的意思是你只想要原始图像数据,你可能必须首先读取和处理图像,因为JPEG和PNG都不包含原始图像数据;它是用各种方法编码的——这就是为什么它们包含元数据来告诉您如何首先解码它。您必须学习/探索JPEG和PNG数据格式,以提取原始的原始图像数据(或在"有损"编码的情况下合理的传真)。

以上所有内容都可以在谷歌上找到的各种网站上得到很好的记录,其中许多网站包括可以为您处理这些杂务的图像处理库。我怀疑你只是不知道搜索类似"JPEG PNG EXIF元数据"的东西。

顺便说一句,EXIF适用于JPEG,其中EXIF是在JPEG文件末尾添加的数据(扩展),通常可以简单地将其截断以删除。在谷歌上快速搜索我,出现了libexif.sourceforge.net和其他类似的结果。

我不完全确定PNG格式,但我相信PNG格式(它也称这些项目为"元数据")是为了将这些数据作为文件格式的一部分而编写的,而不是像EXIF那样在事实之后标记为"扩展名"。然而,PNG是开源的,您可以从PNG网站(www.libpng.org)获得操作它们的库和代码。

有一个应用程序,但它是用Perl写的。它不会重新压缩图像,它在这里http://www.sno.phy.queensu.ca/~phil/exiftool

在这个线程中找到它如何删除EXIF数据而不重新压缩JPEG?

做所有社交媒体网站做的事。创建一个新的图像文件,流式传输图像字节数据,并使用您创建的文件,而不是上传的原始文件。当然,现在您需要找出原始图像的颜色深度等,以便您创建的图像质量不会较低——除非您还需要对磁盘或图像进行调整。