Bagaimana cara mengubah ukuran semua gambar dalam folder (termasuk subfolder)?

11

Saya punya galeri besar, 12GB, di server, penuh gambar di berbagai subfolder. File-file itu terlalu besar dan tidak digunakan dalam resolusi penuh. Saya perlu mengubah ukuran semua gambar hingga lebar 820px (menjaga proporsi). Jadi pertanyaan saya adalah - bagaimana saya bisa membuat semacam skrip perayapan yang akan mengubah ukuran semua gambar lebih besar dari 820px dan menyimpannya kembali menimpa file asli?

Semoga Anda bisa membantu saya :-) Terima kasih sebelumnya.

G-Gore
sumber
3
find . -name "*.jpg" -exec mogrify -resize 820x {} +akan melakukan semuanya; jika Anda tidak ingin memproses yang "kurang dari 820px", ada beberapa opsi di sini .
don_crissti

Jawaban:

13

Alat ImageMagick mengkonversi atau mogrify akan melakukan pekerjaan itu.

Anda bisa mendapatkannya melalui manajer paket Anda atau sumber / rpms di sini: http://www.imagemagick.org/script/binary-releases.php#unix

Penggunaan dasar:

$ mogrify -resize 820x *.jpg

Jika Anda membutuhkan rekursi:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

sumber
Saya tidak berpikir bahwa "lebar 820px (menjaga proporsi)" berarti "mengubah ukuran menjadi 820x820". Ini agak lebih seperti "lebar 820px dan apa pun-proporsinya-tinggi";) Plus ini tidak menangani kekambuhan.
Erathiel
1
Poin yang bagus. Diedit!
Jika Anda ingin membuatnya sehingga hanya mengubah ukuran jika mereka lebih besar dari dimensi yang ditetapkan dan masih mempertahankan rasio, Anda dapat mengubahnya ke ini: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex
2
Perhatian: Ini akan menimpa gambar Anda yang ada.
sudo
5

Gunakan convertuntuk melakukan pekerjaan itu.

convert -resize "1024x768>" origIMG destIMGakan mengubah ukuran origIMG menjadi 1024x768 dengan menjaga aspek rasio dan mengubah ukuran hanya jika gambar lebih besar dari 1024, menyimpan gambar baru di destIMG. Setelah itu Anda dapat memindahkan destIMG ke aslinya.

Gunakan loop untuk melakukan perjalanan melalui semua direktori Anda atau gunakan find.

YoMismo
sumber
Bagaimana Anda akan memodifikasi perintah ini untuk menimpa gambar asli dengan yang dirampingkan, sementara berulang find?
Simon East