ImageMagick – Mengurangkan Saiz Fail

Imagemagick Mengurangkan Saiz Fail



Gambar yang cantik dan besar adalah hampir hebat; ia biasanya disertai dengan kualiti yang luar biasa. Walau bagaimanapun, terdapat banyak, banyak kali apabila anda tidak mampu untuk mempunyai gambar yang bersaiz terlalu besar. Ada kalanya, anda hanya mahukan gambar bersaiz baik atau pun gambar yang kurang daripada saiz tertentu. Dalam kes sedemikian, semua yang diinginkan oleh pengaturcara adalah satu cara untuk mencari jalan tengah antara kualiti dan saiz. Secara teorinya, jika anda melepaskan kualiti sama sekali, maka saiz fail tidak sepatutnya menjadi masalah, tetapi perkara sebenar adalah untuk mencari kompromi antara kualiti dan saiz fail. Dalam tutorial ini, kami akan membincangkan cara untuk mengurangkan saiz fail gambar menggunakan ImageMagick (tanpa menjejaskan kualiti terlalu banyak).

Memasang ImageMagick

Kami memerlukan ImageMagick untuk ini, jadi pertama, mari pasangkannya:







sudo apt-get install imagemagick



Suis Kualiti

Cara pertama dan paling mudah untuk mengurangkan saiz foto/gambar/video ialah mengurangkan kualiti foto. Suis kualiti mewakili tahap mampatan JPEG/MIFF/PNG. Untuk JPEG dan MPEG, kualiti 1 mewakili tahap pemampatan tertinggi dan kualiti imej terendah, manakala 100 mewakili tahap pemampatan paling rendah dan kualiti terbaik.



Jadi mari kita lihat contoh; gambar yang saya ambil pada pokok ialah 4624×3468 dari segi resolusi dan ialah 5.70226MiB. Ini adalah gambar asal, JPEG, untuk lebih spesifik.






Sekarang, maksudnya ialah kita mahu mengecilkan saiz imej. Jadi mari cuba tetapkan tetapan suis kualiti kepada sesuatu yang sedikit berbeza dan lihat apa yang berlaku.

tukar tree_4624x3468.jpg -berkualiti 75 tree_4624x3468_quality75.jpg
tukar tree_4624x3468.jpg -berkualiti 25 tree_4624x3468_quality25.jpg



Saya mengurangkan kualiti kepada 75 untuk satu gambar dan 25 untuk yang lain. Imej asal ialah 5.70226MiB, tetapi imej yang mempunyai kualiti 75 menjadi 2.74664MiB manakala kualiti 25 menjadi 1358250 (1.295MiB). Di sini, saya secara peribadi akan menggunakan kualiti 75%.



Sekarang, memandangkan kami juga mengambil berat tentang kualiti sebenar foto, izinkan saya menunjukkan foto tersebut kepada anda:


tree_4624x3468_quality75.jpg


tree_4624x3468_quality25.jpg

Seperti yang anda lihat, kualiti tidak terjejas terlalu banyak, tetapi saiz fail lebih kecil.

Sekarang, saya cuba melakukan perkara yang sama dengan PNG, dan inilah yang saya dapat:


Jadi, ia berubah daripada 23501600B (22.413MiB) kepada 22.2854MiB. Untuk JPEG, ia berubah daripada 5.70226MiB kepada 1.295MiB. Untuk format tidak rugi seperti PNG, suis kualiti adalah lebih sukar.

Mengubah Saiz Gambar

Mengubah saiz gambar adalah cara lain. Sebagai contoh:

tukar tree_4624x3468.jpg -saiz semula lima puluh % x50 % tree_4624x3468_resize50 % .jpg



Seperti yang anda boleh lihat dengan jelas, gambar yang berukuran 4624×3468 ialah 5.70226MiB, manakala yang berukuran 2312×1734 hanyalah 1.56287MiB.

Suis Tentukan

Suis define diikuti dengan kunci dan nilai yang diberikan.

-define key{=value}…

Senarai nilai kunci yang mungkin boleh didapati di .

Untuk PNG, anda boleh menggunakan png:compression-level=value. Nilai boleh jadi apa-apa daripada 0 hingga 9. Nilai 0 akan memberikan anda pemampatan paling sedikit, tetapi ia pantas, dan nilai 9 akan memberikan anda pemampatan terbaik tetapi paling perlahan. Apa-apa di antaranya juga berlaku.

Sebagai contoh:

tukar tree_4624x3468.png -takrifkan png:tahap mampatan= 9 tree_4624x3468_compression9.png



Dalam kebanyakan keadaan, apa yang dikehendaki oleh pengaturcara ialah menetapkan saiz maksimum untuk foto. Jadi, katakan sebagai contoh anda ingin menetapkan saiz maksimum untuk foto. Anda boleh menggunakan suis define untuk melakukan ini.

-define jpeg:extent={size}

tukar  tree_4624x3468.jpg -takrifkan jpeg: takat =1MB tree_4624x3468_extent1MB.jpg



Seperti yang anda lihat dalam gambar di atas, ia menetapkannya kepada resolusi 4624×3468 dan saiz 0.897MiB. Jadi, seperti yang anda minta, ImageMagick telah mencipta foto yang kurang daripada saiz maksimum 1MB.

Suis Jalur

Gambar yang kami ambil dengan kamera disertakan dengan Metadata. Mengalih keluar Metadata juga boleh mengosongkan beberapa ruang. Dalam ImageMagick, kami melakukan ini menggunakan suis jalur.

tukar tree_4624x3468.jpg -jalur tree_strip.jpg



Di sini, seperti yang anda lihat, foto asal ialah 4624×3468 dan 5.7MiB. Tetapi imej yang telah dilucutkan Metadatanya ialah 4.65MiB.

Suis Ruang Warna

Anda juga boleh cuba menukar ruang warna. Dalam contoh pertama ini, saya akan mengubahnya menjadi kelabu.

tukar tree_4624x3468.jpg -ruang warna grey tree_gray.jpg -berkualiti 75



Seperti yang anda lihat, pengurangan saiz imej tidak terlalu besar, tetapi terdapat pengurangan - daripada 5.70226MiB kepada 4.44997MiB.

Sebagai alternatif, saya juga mencuba yang berikut:

tukar tree_4624x3468.png -ruang warna pokok kelabu_graypng.png



Dalam kes PNG, foto asal saya, iaitu 4624×3468, ialah 22.42MiB, tetapi apabila saya mengubahnya menjadi kelabu, ia menjadi 8.88MiB.

Tukar Warna

Anda juga boleh memilih untuk menukar bilangan warna yang digunakan. Dalam kes ini, saya hanya akan menggunakan 16 warna pada PNG.

tukar tree_4624x3468.png -warna 16 tree_4624x3468_16colors.png



PNG asal ialah 4624×3468 dan 22.42MiB. Walau bagaimanapun, apabila saya menukar warna kepada hanya 16, imej menjadi 4.27MiB dalam saiz. Dan foto itu kelihatan seperti ini:


tree_4624x3468_16colors.png

Menggunakan Berbilang Suis

Kini, anda tidak perlu menggunakan satu suis pada foto! Anda boleh menggabungkan seberapa banyak suis yang anda mahu pada gambar.

Jadi, dalam contoh 1, saya akan mengambil gambar PNG bagi pokok. Foto asal ini bersaiz 4624×3468 dan 22.42MiB, dan saya akan menggunakan berbilang suis dan melihat ke mana ia membawa saya.

tukar tree_4624x3468.png -jalur -saiz semula 75 % x75 % -takrifkan png:tahap mampatan= 9 -ruang warna kelabu  pokok_4624x3468_reducedsize.png



Jadi PNG ini, dengan saiz asal 22.42MiB, bertukar menjadi gambar 5.3MiB. Gambar yang terhasil adalah kira-kira 23% daripada saiz asal.

Jadi seterusnya, mari lihat JPG.

tukar tree_4624x3468.jpg -berkualiti 75 -saiz semula 75 % x75 % -jalur -warna 16 tree_4624x3468_reducedsize.jpg



Jadi, di sini, untuk JPG, kami beralih daripada saiz asal 5.7MiB kepada kira-kira 2.2MiB untuk imej berwarna.

Tetapi jika ia tidak berwarna:

tukar tree_4624x3468.jpg -berkualiti 75 -saiz semula 75 % x75 % -jalur -ruang warna pokok kelabu_4624x3468_reducedsize.jpg



Di sini, kami beralih daripada saiz asal 5.7MiB kepada 1.6MiB untuk imej kelabu.

Jika anda mahu, anda boleh menetapkan had maksimum pada saiz juga. Intinya ialah anda boleh mengurangkan saiz jika anda benar-benar menetapkan fikiran anda.

Kesimpulan

Apabila menulis kod untuk tujuan tertentu, kami cenderung menggunakan gambar juga, dan kadangkala, kami tidak mampu untuk mempunyai gambar yang bersaiz terlalu besar. Dalam kes sedemikian, fokus utama pengaturcara adalah untuk mencari kompromi antara saiz gambar dan kualiti gambar. Kami tidak mahu menggunakan gambar yang terlalu rendah kualitinya, tetapi kami juga tidak mampu untuk memiliki gambar bersaiz besar. Jadi, kita perlukan cara untuk mengecilkan saiz gambar. ImageMagick menawarkan pelbagai cara untuk mengurangkan saiz gambar anda dalam bentuk pelbagai suis – kualiti, ubah saiz, tentukan, dll. Anda boleh menggunakan satu atau lebih daripadanya untuk melaraskan saiz gambar.