gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:14:39 36 4
gpt4 key购买 nike

如何将图像通过管道传输到 exiv2 或 imagemagick,去除 EXIF 标签,并将其通过管道输出到标准输出以进行更多操作?

我希望是这样的:

exiv2 rm - - | md5sum

这将输出通过标准输入提供的图像并计算其 md5sum。

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

最佳答案

使用 exiv2

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

image.sh:

#!/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.

你会像这样使用它:

cat image.jpg | image.sh

使用 ImageMagick

您可以使用 ImageMagick 而不是使用 convert 命令来执行此操作:

cat image.jpg | convert -strip - - | md5sum

警告:

我发现使用 convert 去除 EXIF 标签的图像比使用 exiv2 产生更小的文件大小。我不知道为什么会这样,也不知道这两个命令究竟有什么不同。

来自 man exiv2:

rm        Delete image metadata from the files.

来自 man convert:

-strip        strip image of all profiles and comments

使用exiftool

ExifTool by Phil Harvey

你可以使用 exiftool(我的想法来自 https://stackoverflow.com/a/2654314/3565972 ):

cat image.jpg | exiftool -all= - -out - | md5sum

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

结论

不用说,所有三种方法(exiv2convertexiftool)都会产生具有不同 md5 哈希值的输出。不知道这是为什么。但也许如果您选择一种方法并坚持使用,它就足以满足您的需求。

关于shell - 使用 exiv2 或 imagemagick 从 stdin 中删除 EXIF 数据并输出到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984963/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com