首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用exiv2或imagemagick将EXIF数据从stdin中删除并输出到stdout

使用exiv2或imagemagick将EXIF数据从stdin中删除并输出到stdout
EN

Stack Overflow用户
提问于 2014-06-01 22:02:38
回答 2查看 4.1K关注 0票数 3

我如何将图像导入exiv2或imagemagick,剥去EXIF标记,并将其输送到stdout以进行更多的操作?

我希望这样的事情:

代码语言:javascript
复制
exiv2 rm - - | md5sum

它将输出通过stdin提供的图像并计算其md5sum。

或者,有更快的方法来做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-01 23:01:51

使用exiv2

我无法找到让exiv2输出到stdout的方法--它只想覆盖现有的文件。您可以使用一个小的bash脚本来创建一个临时文件,并获取该文件的md5哈希。

image.sh

代码语言:javascript
复制
#!/bin/bash
cat <&0 > tmp.jpg  # Take input on stdin and dump it to temp file.
exiv2 rm tmp.jpg   # Remove EXIF tags in place.
md5sum tmp.jpg     # md5 hash of stripped file.
rm tmp.jpg         # Remove temp file.

你会像这样使用它:

代码语言:javascript
复制
cat image.jpg | image.sh

使用ImageMagick

您可以使用ImageMagick而不是使用convert命令来做到这一点:

代码语言:javascript
复制
cat image.jpg | convert -strip - - | md5sum

警告:

我发现使用convert剥离EXIF标记的图像比使用exiv2的文件大小要小。我不知道这是为什么,以及这两个命令到底做了什么。

来自man exiv2

rm更好地将图像元数据从文件中删除。

来自man convert

-strip成象的所有剖面图和评论

使用exiftool

ExifTool :菲尔·哈维

您可以使用exiftool (我是从https://stackoverflow.com/a/2654314/3565972那里得到的):

代码语言:javascript
复制
cat image.jpg | exiftool -all= - -out - | md5sum

由于某种原因,这也产生了一个与其他两个略有不同的图像大小。

结论

不用说,这三种方法(exiv2convertexiftool)都用不同的md5散列产生输出。不知道这是为什么。但是,如果你选择一种方法并坚持下去,它就会满足你的需要。

票数 4
EN

Stack Overflow用户

发布于 2015-07-08 00:17:32

我用NEF文件做了测试。似乎只有exiv2 rm运行得最好。exiftoolconvert不能从.nef文件中删除所有元数据。

请注意,大多数图像查看器无法再显示exiv2 rm的输出文件。但是,我只需要在更新MD5文件的任何元数据之后,.NEF哈希保持不变。对我来说是完美的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23984963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档