サイトで私が確認した多くの画像は完全に空です。つまり、500x500で、すべてのピクセルが白です。すべてのイメージは、イメージディレクトリのサブディレクトリにあります。何が白であるかを確認する方法は?これらのイメージの名前を調べるか考えています。
修正する:
- bashスクリプトやコマンドを使いたいです。
- Imagemagickがインストールされました。
- サーバーはUbuntu 14.04です
- すべての画像に.jpg拡張子があります。
答え1
ImageMagickパッケージがある場合、またはインストールできる場合は、identify
ファイルのカラーヒストグラムを印刷するユーティリティがあります。以下のawkプログラムは、identify -verbose
出力をスキャンしてヒストグラムにリストされている色と色の数を取得します。 1つの色だけが表示され、ヒストグラムの唯一の色が白の場合は「成功」を返し、それ以外の場合は「失敗」を返します。
その後、awkの周囲にシェルスクリプトをラップして識別し、一致するファイルにフラグを立てることができます。
for f in images/*
do
identify -verbose "$f" | awk -f iswhite.awk && echo "$f is an all-white image"
done
iswhite.awk:
/Histogram:/ {
inhisto=1
}
inhisto && /[[:digit:]]+: \([ [:digit:]]{3},[ [:digit:]]{3},[ [:digit:]]{3}\) #/ {
if ($0 !~ /#FFFFFF white/) { nonwhite=1 }
}
/Rendering intent/ {
inhisto=0
}
/Colors: / {
ncolors=$2
}
END {
if (ncolors == 1 && nonwhite == 0) { exit 0 } else { exit 1 }
}
答え2
# Look for and compare images that are 90% similar
# in all subdirectories of the current directory.
findimagedupes -R -- .
この-t
オプションは画像の類似性を制御します。
# Same as before but for images that are 99% similar.
findimagedupes -t 99 -R -- .
ディレクトリに次のファイルがあるとします。
white.png foo.png. bar.png. baz.jpg green.png
...どこ白.png誰もが知っているように、彼は白人です。緑.pngとみなされるグリーン、もう一つは不確実です。findimagedupes
同様のファイルはすべて同じ行(スペースで区切られている)に出力されるため、白いファイルのみが表示されます。
findimagedupes -t 100 -R -- . | grep -w white.png
出力(家庭バー.png白です):
white.png bar.png
また見なさい:両方の画像がグラフィック的に同じであることを確認するコマンドラインツール、より一般的に:Linux用のスマート冗長ファイルの検索。