画像はJPEGファイルとPNGファイルとして保存されます。私はその中の正方形のリストを取得したいと思います。
答え1
convert
ImageMagickとAwkのコマンドを使用してこれを行うことができます。
convert *.png *.jp* -format '%w %h %f\n' info: | awk '$1==$2 { $1=$2=""; print substr($0, 3) }'
上記のコマンドは、次の内容を含むイメージのリストを出力します。正確に水平ピクセルと垂直ピクセル数は同じです。逆に、ただ探したいなら視覚的に類似正方形の場合は、次のようにできます。
# Find all images in which one side is no more than 5% larger than the other.
convert *.png *.jp* -format '%w %h %f\n' info: | awk '($1>$2?$1:$2)/($1>$2?$2:$1)<=1.05 { $1=$2=""; print substr($0, 3) }'
イメージのファイル名に改行文字が含まれている場合、両方のコマンドは正しく機能しません。
答え2
exiftool
現在のディレクトリ()で次を使用します.
。
exiftool -q -if '$ImageHeight == $ImageWidth' -p '$Filename' -ext jpg .
これを行う別の方法imagemagick
(fx
特殊演算子):
for f in ./*.[jJ][pP][gG]
do
(( $(identify -format '%[fx:(h == w)]' "$f") )) && printf '%s\n' "$f"
done
式は if および if so を'%[fx:(h == w)]'
返し、順番にの戻り値はそれぞれおよび です。1
true
0
false
(( ))
true
false
どちらのソリューションも入力ファイルjpg
またはJPG
拡張子があるとします。あなたのニーズに合わせて調整してください...
また、参照してくださいエンウィック次のファイルを検索する場合は、以下のコメントを確認してください。バラよりほぼ正方形の形です。
答え3
次の解決策は、@loa_in_のコメントにあるアイデアに基づいています。この操作の場合を使用するfile
よりもはるかに高速ですconvert
。また、「奇妙な」ファイル名も正しく処理します。
file -F '' -0 *.png \
| sed -e 's/^\(.*\)\x00.*PNG.*, \([0-9]\+\) x \([0-9]\+\).*$/\2 \3 \1/;s/^\(.*\)\x00.*JPEG.*, \([0-9]\+\)x\([0-9]\+\).*$/\2 \3 \1/' \
| awk '$1==$2 { $1=$2=""; print substr($0, 3) }'
file
JPEGファイルとPNGファイルの出力の解像度部分が異なるように見えるので、別々に解析します。
答え4
すべてのサブディレクトリに正方形のpng画像を含めるための@nwkの拡張バージョン:
find . -name \*.png -print0 | xargs -0 -I{} convert {} -format '%w %h %f\n' info: | awk '$1==$2 { $1=$2=""; print substr($0, 3) }'