Anda juga dapat menggunakan fx
operator untuk memfilter gambar berdasarkan tinggi / lebar mis
identify -format '%[fx:(h>400 && w>400)]\n' image.png
akan menampilkan 1
jika gambar lebih besar dari 400x400
dan 0
jika sama atau lebih kecil dari 400x400
...
Mengasumsikan nama file waras (tidak ada baris baru / spasi / tab dll) yang dapat Anda gunakan identify
untuk mencetak nama gambar yang didahului oleh salah satu 1:
atau 0:
, memproses output menghapus garis yang dimulai dengan 0:
dan menghapus baris 1:
di sisa baris sehingga hanya nama file yang tersisa, satu per baris, lalu pipa daftar itu ke mogrify ... @-
( @
sintaks ditambahkan imagemagick v6.5.2
):
identify -format '%[fx:(h>400 && w>400)]:%i\n' ./*.png | \
sed '/^1:/!d;//s///' | mogrify -resize '400x400' -- @-
Jika tidak, find
Anda hanya dapat mencetak file dengan ukuran> 400x400 dan kemudian mengirimkan hasilnya ke xargs
+ mogrify
(itu kurang efisien karena menjalankan shell untuk setiap file tetapi harus bekerja dengan semua jenis nama file):
find . -maxdepth 1 -type f -name '*.png' -exec sh -c \
'identify -format "%[fx:(h>400 && w>400)]\n" "$0" | grep -q 1' {} \; -print0 \
| xargs -0 mogrify -resize '400x400'
Jika Anda seorang zsh
pengguna, lihat juga jawaban ini .