【问题标题】:How to remove metadata from jpg and png images如何从 jpg 和 png 图像中删除元数据
【发布时间】:2014-08-27 02:48:00
【问题描述】:

这在 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);
            }

照片是模型中的一个属性,如下所示。

public byte[] PhotoFile { get; set; }

我想删除上述元数据或仅删除所有元数据的方法是使用类似这样的编码

if (image != null)
            {
                image = image.RemoveAllMetaData; !!!

我不介意使用一些 3rd 方 dll,只要它与 NET 4 兼容。

谢谢。

【问题讨论】:

  • 您是否尝试过创建新图像并仅保存实际图像数据?
  • 您可以将图像以 bmp 格式保存到 memorySteam。

标签: c# .net


【解决方案1】:

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

如果您指的是 EXIF 数据之类的东西,那么网上已经有很多关于如何添加/修改/删除 EXIF 标签的编程材料,甚至有些应用程序已经去除了这些标签:例如http://www.steelbytes.com/?mid=30

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

以上所有内容均在可在 Google 上找到的各种网站上进行了详细记录,其中许多都包含可以为您处理这些琐事的图像处理库。我怀疑您只是不知道要搜索“JPEG PNG EXIF METADATA”之类的内容。

顺便说一句,EXIF 适用于 JPEG,其中 EXIF 是松散(并且在技术上不完全正确)在 JPEG 文件末尾添加数据(扩展名),通常可以简单地截断以删除。在 Google 上快速搜索我会发现类似 libexif.sourceforge.net 和其他类似结果。

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

【讨论】:

  • 谢谢 C.M.和 Sujay,很遗憾,我无法同时给出正确答案。
【解决方案2】:

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

在这个帖子里找到了 How to remove EXIF data without recompressing the JPEG?

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-30
      • 2011-07-16
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      相关资源
      最近更新 更多