从常见图像格式中删除所有元数据?

2023-12-11

我正在为一个项目编写一项服务来处理我们的图像处理。一个这样的过程应该从数据中剥离所有元数据byte[]提供并返回相同的图像byte[].

我目前正在研究的方法涉及始终将图像转换为Bitmap,然后将其转换回原始格式并从 a 返回数据MemoryStream.

我还没有能够测试它,但有件事告诉我,我将经历一些质量损失。

如何从具有通用格式的任何图像中删除所有元数据?

(bmp, gif, png, jpg, icon, tiff)

不知道如何进一步缩小范围。如果我能得到一些有关否决票的反馈,那就太好了。


对于无损格式(JPEG 除外),您可以将其作为位图加载并重新保存。不确定 .NET 本身是否支持 TIFF(我怀疑它确实支持)。

对于 JPEG,正如您所建议的,如果您在解压缩后重新压缩文件,可能会出现质量损失。为此,您可以尝试Exif库看看有没有什么。如果没有,可以使用命令行工具(例如 ImageMagick)来删除元数据。 (如果您使用 ImageMagick,那么您就已经准备好了,因为它支持您所需的所有格式。您想要的命令是convert -strip.)

对于 TIFF,.NET 内置了TiffBitmapDecoder and ...Encoder您可能能够使用的课程;see here.

简而言之,使用像 ImageMagick 这样的外部工具绝对是最简单的解决方案。如果您无法使用外部工具,则几乎肯定需要对 .NET 本身不支持的格式(以及有损 JPEG)进行特殊处理。

EDIT:我刚刚读到 ImageMagick不对 JPEG 进行无损剥离, 对不起。我想使用上面链接的库或其他一些 JPEG 库是我能想到的最好的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从常见图像格式中删除所有元数据? 的相关文章

  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 计算随机生成的数字列表中的频率

    我生成了 0 9 的 100 个随机数 我应该计算每个数字出现的次数 将其存储在 10 个整数的数组中并进行计数 这是我到目前为止所拥有的 我无法弄清楚计数部分 Random r new Random int integers new in
  • 对单词数组进行排序 - 非英文字母 + 双字符字母 PHP

    我想按字母顺序对单词数组进行排序 不幸的是 在我的语言 克罗地亚语 中 有双字符字母 例如 lj nj d 并且 php 未正确排序字母sort函数 例如 这是正确排序的克罗地亚字母表 还有一些英文字母 alphabet array a b
  • java中如何将图像转换为透明图像

    如何将图像的白色背景转换为透明背景 谁能告诉我该怎么做 谷歌的第一个结果是这样的 使颜色透明http www rgagnon com javadetails java 0265 html 它使图像的蓝色部分透明 但我确信您可以调整它以使用白
  • 如何将图库中的图像存储到 SQLite 数据库中

    我已经尝试使用此代码将图像从图库上传到我的应用程序中的 sqllite 数据库 但是当我的应用程序尝试打开图库时 它给出强制关闭错误 我不知道问题是什么 请帮助我并提前感谢 public class ImagggggggActivity e
  • 转换后的 mp4 h264 基线格式加载时间较长

    我已将视频转换为 mp4 x264 基线格式 并且它可以在所有 PC 手机上正常工作 问题是加载视频需要很长时间 而谷歌搜索发现 ffmpeg 会在视频的末尾处转换并设置索引文件因此它会加载到最后阅读 然后播放视频 因此任何缩短加载时间的建
  • Iterator 类和 foreach 构造之间的性能差异

    我正在运行以下代码 但有时在运行它时会出现某种并发异常 ArrayList
  • 计算青蛙到达河对岸所需的最少跳跃次数

    我正在处理下面提供的 Codility 问题 斐波那契数列使用以下递归公式定义 F 0 0 F 1 1 F M F M 1 F M 2 if M gt 2 一只小青蛙想要到河的对岸 青蛙最初位于河的一侧 位置 1 并想要到达另一侧 位置N
  • 检查 PHP 中的多个变量(布尔值)

    我在我的代码中使用它 但我认为它可以改进并且可以用更简单的方式完成 if phaseOne true phaseTwo true phaseThree true 你可以这样做 if phaseOne phaseTwo phaseThree
  • 在 Pandas 中按组回填列

    我有一个类似的csv A B C D 1 2 1 2 30 100 1 2 40 100 4 5 4 5 60 200 4 5 70 200 8 9 第 1 行和第 4 行中缺少 C 值 NaN 我想分别从第 2 行和第 5 行获取它们的值
  • 如何在GroupLayout Java中设置Jframe背景图片

    我试图为我的框架设置背景图像 但它不起作用 我尝试了这个链接 在 JFrame 中设置背景图像 代码 setContentPane new JLabel new ImageIcon ImageIO read new File Images
  • split 不返回空元素

    为什么这些不都返回bbb perl e a print map b split a lt
  • 过滤器功能 dplyr 似乎不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 假设我在 R Studio 中加载了一个名为 exprCore1 的数据框 df 如下所示 measure qid value 1 p5 1 0 2 2 p100 1 0 8
  • Angular2路由器保留查询字符串

    我编写了一个使用路由器的 Angular2 v2 0 1 应用程序 该网站加载了多个查询字符串参数 因此完整的 URL 最初如下所示 https my application com param1 val1 param2 val2 para
  • 设计以避免派生类中的类型转换?

    public interface IBasePresenter public interface IJobViewPresenter IBasePresenter public interface IActivityViewPresente
  • 使用变量过滤器列出文件

    我正在尝试在 shell bash 中使用过滤器列出文件 这个例子有效 result ls A1 A2 txt echo result 文件1 A1 txt 文件2 A2 txt 但是当将过滤器放入变量中时 它不起作用 filter A1
  • 带 AVPlayer 的应用程序启动后播放 mp4 中断 iPod 音乐

    我的应用程序使用 AVPlayer 播放 mp4 当我的应用程序完成启动时 它会中断 iPod 音乐 尽管我已将音频会话设置为允许与其他人混合 BOOL application UIApplication application didFi
  • C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异

    我正在比较 C 和 Python 计算的数值结果 在 C 中 我利用 LAPACK 的 sgels 函数来计算线性回归问题的系数 在 Python 中 我使用 Numpy 的 linalg lstsq 函数来完成类似的任务 sgels 和
  • Angular2:渲染/重新加载组件的模板

    理想情况下 我需要重新加载 重新渲染我的组件模板 但如果有更好的方法来做到这一点 我将很乐意实现它 期望的行为 所以 我有一个菜单元素的组件 什么时候 在另一个组件中 我点击一个 IBO 每说某种 客户 被点击我需要add 我在用着 ngI
  • clojure.java.sh:没有这样的文件或目录

    我编写了一个程序来汇编 dot 文件 并想使用 Clojure 的sh给出编译命令 具体来说 我使用以下函数来做到这一点 defn compile graphviz Dumps graphviz string to a file then
  • 从常见图像格式中删除所有元数据?

    我正在为一个项目编写一项服务来处理我们的图像处理 一个这样的过程应该从数据中剥离所有元数据byte 提供并返回相同的图像byte 我目前正在研究的方法涉及始终将图像转换为Bitmap 然后将其转换回原始格式并从 a 返回数据MemorySt