ディレクトリ内のすべての正方形の画像を見つける方法

ディレクトリ内のすべての正方形の画像を見つける方法

画像はJPEGファイルとPNGファイルとして保存されます。私はその中の正方形のリストを取得したいと思います。

答え1

convertImageMagickと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 .

これを行う別の方法imagemagickfx特殊演算子):

for f in ./*.[jJ][pP][gG]
  do
    (( $(identify -format '%[fx:(h == w)]' "$f") )) && printf '%s\n' "$f"
  done

式は if および if so を'%[fx:(h == w)]'返し、順番にの戻り値はそれぞれおよび です。1true0false(( ))truefalse


どちらのソリューションも入力ファイル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) }'

fileJPEGファイルと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) }'

関連情報