2

画像を exiv2 または imagemagick にパイプし、EXIF タグを取り除き、さらに操作するためにそれを stdout にパイプアウトするにはどうすればよいですか?

私は次のようなことを望んでいます:

exiv2 rm - - | md5sum

stdin を介して提供された画像を出力し、その md5sum を計算します。

あるいは、これを行うためのより速い方法はありますか?

4

2 に答える 2

3

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 の使用

convert次のコマンドを使用して、代わりに ImageMagick を使用してこれを行うことができます。

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

警告:

を使用して EXIF タグの画像をconvert削除すると、exiv2. これがなぜなのか、これら 2 つのコマンドで何が違うのか正確にはわかりません。

からman exiv2:

rm ファイルから画像メタデータを削除します。

からman convert:

-すべてのプロフィールとコメントのストリップ画像

exifツールの使用

Phil HarveyによるExifTool

使用できます( https://stackoverflow.com/a/2654314/3565972exiftoolからアイデアを得ました):

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

これも、何らかの理由で、他の 2 つとはわずかに異なる画像サイズを生成します。

結論

言うまでもなく、3 つのメソッド ( exiv2convertexiftool) はすべて、異なる md5 ハッシュで出力を生成します。これがなぜなのかわかりません。しかし、方法を選んでそれに固執すれば、それはあなたのニーズに対して十分に一貫したものになるでしょう。

于 2014-06-01T23:01:51.967 に答える