问题描述
如何将图像传输到exiv2或imagemagick,剥离EXIF标记,并将其传输到标准输出以进行更多操作?
How can I pipe an image into exiv2 or imagemagick, strip the EXIF tag, and pipe it out to stdout for more manipulation?
我希望能找到一些东西喜欢:
I'm hoping for something like:
exiv2 rm - - | md5sum
将输出通过stdin提供的图像并计算其md5sum。
which would output an image supplied via stdin and calcualte its md5sum.
或者,有更快的方法吗?
Alternatively, is there a faster way to do this?
推荐答案
使用exiv2
我无法找到一种方法来获得 exiv2
输出到 stdout
- 它只想覆盖现有文件。您可以使用一个小的 bash
脚本来创建一个临时文件并获取该文件的md5哈希。
Using exiv2
I was not able to find a way to get exiv2
to output to stdout
-- it only wants to overwrite the existing file. You could use a small bash
script to make a temporary file and get the md5 hash of that.
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
命令来执行此操作:
Using ImageMagick
You can do this using ImageMagick instead by using the convert
command:
cat image.jpg | convert -strip - - | md5sum
警告:
我发现使用 convert
剥离EXIF标记的图像导致文件大小小于使用 exiv2
。我不知道为什么会这样,这两个命令究竟做了什么不同。
I found that stripping an image of EXIF tags using convert
resulted in a smaller file-size than using exiv2
. I don't know why this is and what exactly is done differently by these two commands.
来自 man exiv2
:
从 man convert
:
使用exiftool
你可以使用 exiftool
(我从):
cat image.jpg | exiftool -all= - -out - | md5sum
由于某种原因,这也会产生与其他两个图像尺寸略有不同的图像尺寸。
This too, for some reason, produces a slightly different image size from the other two.
毋庸置疑,所有三种方法( exiv2
,转换
, exiftool
)生成具有不同md5哈希值的输出。不知道为什么会这样。但也许如果你选择一种方法并坚持下去,它将足以满足你的需求。
Needless to say, all three methods (exiv2
, convert
, exiftool
) produce outputs with different md5 hashes. Not sure why this is. But perhaps if you pick a method and stick to it, it will be consistent enough for your needs.
这篇关于使用exiv2或imagemagick从stdin中删除EXIF数据并输出到stdout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!