複数の画像から重複したアイテムを削除したいです。同じ画像の他の解像度のコピーがあるので、自分で削除します。しかし、私はこれを線形時間にしたいと思います。だから、小さなスクリプトを使って平均色のプレフィックスで画像の名前を変更して画像を並べ替えるのが賢明だと思いました。問題は、CLIで平均色を計算できるソフトウェアがないことです。あなたはいますか?
答え1
最後に、しばらく遊んでImageMagickパッケージを見つけました。スクリプトがなくてもコンソールで1行のコードでこれを行うことができるという点で非常に良いです。
for i in ./*; do mv "$i" "$(convert "$i" -scale 1x1\! -format '%[pixel:s]' info:- | cut -db -f2-)${i#./}" ;done
フォルダ全体を繰り返し(前提:画像のみが含まれています!)、convert "$i" -scale 1x1\! -format '%[pixel:s]' info:-
出力から関連部分を抽出して平均色を取得し、cut -db -f2-
最後にファイル名を変更します。怖いのは、それがどれほど効果的かということです。
挨拶
答え2
あなたの質問を正しく理解したら、次のようにすることができます。
wget -qO- 'https://www.gravatar.com/avatar/22e8a29fced165b37995aa5e05e6449b?s=32&d=identicon&r=PG' |
anytopnm |
tail -n +4 |
perl -ne 'BEGIN{$/=\3}
($r,$g,$b)=unpack"C3";$ar+=$r;$ag+=$g;$ab+=$b
END{printf "#%02x%02x%02x\n", $ar/$.,$ag/$.,$ab/$.}'
あなたのアバター()は以下を提供します#c350c2
:
in formatがanytopnm
常に返されると仮定します。画像がグレースケールの場合など、一部の場合はそうでない可能性があります。この場合、ImageMagickを使用する方が安全です。PNM
P6
convert - ppm:-