Saya ingin mengompres file gambar JPG dengan ImageMagick tetapi tidak bisa mendapatkan banyak perbedaan ukuran. Secara default ukuran output lebih besar dari input. Saya tidak tahu mengapa, tetapi setelah menambahkan beberapa opsi profil + dan menurunkan kualitasnya saya bisa mendapatkan ukuran yang lebih kecil tetapi masih mirip dengan yang asli.
Gambar input adalah 255kb, gambar yang diproses adalah 264kb (menggunakan + profil untuk menghapus profil dan menetapkan kualitas hingga 70%). Apakah ada cara untuk mengompres gambar itu ke 150kb setidaknya? Apakah itu mungkin? Opsi ImageMagick apa yang dapat saya gunakan?
image-processing
imagemagick
Javis Perez
sumber
sumber
Jawaban:
Saya selalu menggunakan:
dalam imagemagick seharusnya
atau dalam versi yang lebih baru:
semoga ini bermanfaat.
Tautan sumber: http://www.yuiblog.com/blog/2008/12/05/imageopt-4/
Dari @Fordi di komentar (jangan lupa jempol komentarnya jika Anda mau): Jika Anda tidak suka kabur, gunakan
-sampling-factor 4:2:0
saja. Apa yang dilakukan adalah mengurangi resolusi saluran chroma menjadi setengah, tanpa mengacaukan resolusi luminansi yang dipegang mata Anda. Jika Anda ingin kesetiaan yang lebih baik dalam konversi, Anda bisa mendapatkan sedikit peningkatan tanpa peningkatan filesize dengan menentukan-define jpeg:dct-method=float
- yaitu, gunakan floating cosine transform floating point yang lebih akurat, daripada versi fast integer default.sumber
mogrify -strip -interlace Plane -gaussian-blur 0.05 -quality 85% *.jpg
. Pastikan Anda memiliki cadangan sebelum menjalankan perintah itu. Itu akan menulis di tempat.-strip
melakukannya untukku. Terima kasihmogrify -strip -quality 75% *.jpg
. Strip bagus. 0 kehilangan kualitas, dan penghematan ruang yang besar. Dan kualitas pada 75% hampir tidak dapat dibedakan dari 100%, tetapi mengambil setengah ruang.Saya menggunakan pedoman pengoptimalan gambar Google Pagespeed Insights , dan untuk ImageMagick mereka merekomendasikan yang berikut ini:
-sampling-factor 4: 2: 0
-strip -quality
85 [bisa bervariasi, saya menggunakan rentang 60-80, angka yang lebih rendah di sini berarti file yang lebih kecil]
-interlace
-colorspace RGB
Perintah di ImageMagick:
Dengan opsi ini saya mendapatkan penghematan hingga 40% dalam ukuran JPEG tanpa banyak kehilangan yang terlihat.
sumber
Hanya untuk mereka yang menggunakan kelas Imagick di PHP:
sumber
Suatu kali saya perlu mengubah ukuran foto dari kamera untuk pengembangan:
Perintah:
dan saya tidak dapat melihat perubahan di layar penuh dengan monitor resolusi 1920x1080 saya. Resolusi 2048 adalah yang terbaik untuk mengembangkan foto 10 cm dengan kualitas maksimum 360 dpi. Saya tidak ingin menghapusnya.
sunting: Saya perhatikan bahwa saya bahkan mendapatkan hasil yang lebih baik tanpa mengaburkan. Tanpa memburamkan ukuran file adalah 50% asli, tetapi kualitasnya lebih baik (saat zooming).
sumber
Saya akan menambahkan catatan tambahan yang berguna dan saran umum untuk meminimalkan JPG dan PNG.
Pertama-tama, ImageMagick membaca (atau lebih baik "tebak" ...) level kompresi input jpeg dan jadi jika Anda tidak menambahkan
-quality NN
sama sekali, output harus menggunakan level yang sama dengan input. Terkadang bisa menjadi fitur penting. Kalau tidak, level standarnya adalah-quality 92
(lihat www.imagemagick.org )Sarannya adalah tentang ImageOptim alat gratis yang benar-benar hebat , juga untuk proses batch.
Anda bisa mendapatkan jpg yang lebih kecil (dan png juga, terutama setelah penggunaan ImageAlpha gratis [bukan proses batch] atau Pngyu gratis jika Anda memerlukan proses batch).
Tidak hanya, alat-alat ini untuk Mac dan Menang dan sebagai Baris Perintah (saya sarankan menginstal menggunakan Brew dan kemudian mencari dalam formula Brew).
sumber
Saya menambahkan
-adaptive-resize 60%
ke perintah yang disarankan, tetapi dengan-quality 60%
.Ini adalah hasil saya
Saya tidak yakin apakah konversi itu merusak citra saya terlalu banyak, tetapi sejujurnya saya tidak berpikir konversi saya tampak seperti omong kosong. Itu adalah panorama sudut lebar dan saya tidak peduli dengan penghalang yang teliti.
sumber
Lihat tautan berikut di mana ada opsi di ImageMagick untuk menentukan ukuran file output yang diinginkan untuk menulis ke file JPG.
http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define
-define jpeg:extent={size} As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".
Anda akan kehilangan beberapa kualitas dengan mendekompresi dan mengkompres ulang sebagai tambahan atas kerugian apa pun karena menurunkan nilai kualitas dari input.
sumber
Apakah beberapa bereksperimen sendiri di sini dan anak laki-laki melakukan itu Gausian membuat perbedaan yang bagus. Perintah terakhir yang saya gunakan adalah:
mogrify * -sampling-factor 4: 2: 0 -strip -quality 88 -interlace Pesawat -define jpeg: dct-method = float -colorspace RGB -gaussian-blur 0,05
Tanpa Gausian blur pada 0,05 itu sekitar 261kb, dengan itu sekitar 171KB untuk gambar yang saya uji. Perbedaan visual pada monitor 1440p dengan gambar kompleks besar tidak terlihat sampai Anda memperbesar jalan masuk.
sumber
Berikut solusi lengkap bagi mereka yang menggunakan Imagick di PHP:
sumber
Jika gambar memiliki dimensi besar sulit untuk mendapatkan hasil yang baik tanpa mengubah ukuran, di bawah ini adalah ukuran 60 persen yang untuk sebagian besar tujuan tidak merusak terlalu banyak gambar.
Saya menggunakan ini dengan hasil yang baik untuk gambar skala abu-abu (saya konversi dari PNG):
Saya menggunakan ini untuk halaman B&W yang dipindai membuatnya menjadi gambar skala abu-abu (argumen tambahan membersihkan bayangan dari halaman sebelumnya):
Saya menggunakan ini untuk gambar berwarna:
sumber