- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何将图像通过管道传输到 exiv2 或 imagemagick,去除 EXIF 标签,并将其通过管道输出到标准输出以进行更多操作?
我希望是这样的:
exiv2 rm - - | md5sum
这将输出通过标准输入提供的图像并计算其 md5sum。
或者,有没有更快的方法来做到这一点?
最佳答案
我找不到让 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 而不是使用 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
(我的想法来自 https://stackoverflow.com/a/2654314/3565972 ):
cat image.jpg | exiftool -all= - -out - | md5sum
出于某种原因,这也会产生与其他两个略有不同的图像大小。
不用说,所有三种方法(exiv2
、convert
、exiftool
)都会产生具有不同 md5 哈希值的输出。不知道这是为什么。但也许如果您选择一种方法并坚持使用,它就足以满足您的需求。
关于shell - 使用 exiv2 或 imagemagick 从 stdin 中删除 EXIF 数据并输出到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984963/
我是一名优秀的程序员,十分优秀!