Taruhan terbaik Anda adalah menggunakan ImageMagick.
Saya bukan ahli dalam penggunaan sebenarnya, tetapi saya tahu Anda dapat melakukan hampir semua hal yang berhubungan dengan gambar dengan ini!
Contohnya adalah:
convert image.png image.jpg
yang akan mempertahankan yang asli serta membuat gambar yang dikonversi.
Untuk konversi batch, menurut saya Anda perlu menggunakan alat Mogrify yang merupakan bagian dari ImageMagick.
Perlu diingat bahwa ini menimpa gambar lama.
Perintahnya adalah:
mogrify -format jpg *.png
Saya punya beberapa solusi lagi.
Solusi paling sederhana adalah seperti kebanyakan yang sudah diposting. Sebuah bash sederhana untuk loop.
for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
Untuk beberapa alasan saya cenderung menghindari loop di bash jadi inilah pendekatan xargs yang lebih unxy, menggunakan bash untuk name-mangling.
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.*}.jpg"'
Yang saya gunakan. Ini menggunakan GNU Parallel untuk menjalankan banyak pekerjaan sekaligus, memberi Anda peningkatan kinerja. Itu diinstal secara default pada banyak sistem dan hampir pasti ada di repo Anda (ini adalah program yang bagus untuk dimiliki).
ls -1 *.png | parallel convert '{}' '{.}.jpg'
Jumlah pekerjaan default ke jumlah inti CPU yang Anda miliki. Saya menemukan penggunaan CPU yang lebih baik menggunakan 3 pekerjaan pada sistem dual-core saya.
ls -1 *.png | parallel -j 3 convert '{}' '{.}.jpg'
Dan jika Anda menginginkan beberapa statistik (ETA, tugas selesai, waktu rata-rata per tugas...)
ls -1 *.png | parallel --eta convert '{}' '{.}.jpg'
Ada juga sintaks alternatif jika Anda menggunakan GNU Parallel.
parallel convert '{}' '{.}.jpg' ::: *.png
Dan sintaks serupa untuk beberapa versi lain (termasuk debian).
parallel convert '{}' '{.}.jpg' -- *.png
convert
perintah yang ditemukan di banyak distribusi Linux diinstal sebagai bagian dari suite ImageMagick. Berikut kode bash untuk menjalankan convert
pada semua file PNG dalam direktori dan hindari masalah ekstensi ganda:
for img in *.png; do
filename=${img%.*}
convert "$filename.png" "$filename.jpg"
done