ImageMagick – Pagbabawas ng Mga Laki ng File

Imagemagick Pagbabawas Ng Mga Laki Ng File



Ang isang maganda at malaking larawan ay halos mahusay; karaniwan itong sinasamahan ng napakalaking kalidad. Gayunpaman, maraming, maraming beses na hindi mo kayang magkaroon ng mga larawang masyadong malaki ang sukat. Kung minsan, ang gusto mo lang ay isang decent-sized na larawan o kahit isa na mas mababa sa isang partikular na laki. Sa ganitong mga kaso, ang lahat ng nais ng programmer ay isang paraan upang makahanap ng gitna sa pagitan ng kalidad at laki. Sa teoryang, kung ibibigay mo ang kalidad nang buo, kung gayon ang laki ng file ay hindi dapat maging isang problema, ngunit ang tunay na pakikitungo ay upang makahanap ng isang kompromiso sa pagitan ng kalidad at laki ng file. Sa tutorial na ito, tatalakayin natin ang mga paraan upang bawasan ang laki ng file ng mga larawan gamit ang ImageMagick (nang hindi masyadong nakompromiso ang kalidad).

Pag-install ng ImageMagick

Kakailanganin natin ang ImageMagick para dito, kaya una, i-install natin ito:







sudo apt-get install imagemagick



Ang Quality Switch

Ang una at pinakamadaling paraan upang bawasan ang laki ng isang larawan/larawan/video ay upang bawasan ang kalidad ng larawan. Ang switch ng kalidad ay kumakatawan sa antas ng compression ng JPEG/MIFF/PNG. Para sa JPEG at MPEG, ang kalidad na 1 ay kumakatawan sa pinakamataas na antas ng compression at pinakamababang kalidad ng larawan, habang ang 100 ay kumakatawan sa pinakamababang antas ng compression at ang pinakamahusay na kalidad.



Kaya tingnan natin ang isang halimbawa; ang larawang kinuha ko ng isang puno ay 4624×3468 sa mga tuntunin ng resolusyon at 5.70226MiB. Ito ang orihinal na larawan, isang JPEG, upang maging tiyak.






Ngayon, ang punto ay gusto naming bawasan ang laki ng imahe. Kaya't subukan nating itakda ang mga setting ng switch ng kalidad sa isang bagay na medyo naiiba at tingnan kung ano ang mangyayari.

convert tree_4624x3468.jpg -kalidad 75 tree_4624x3468_quality75.jpg
convert tree_4624x3468.jpg -kalidad 25 tree_4624x3468_quality25.jpg



Binawasan ko ang kalidad sa 75 para sa isang larawan at 25 para sa isa pa. Ang orihinal na larawan ay 5.70226MiB, ngunit ang imahe na may kalidad na 75 ay naging 2.74664MiB habang ang may kalidad na 25 ay naging 1358250 (1.295MiB). Dito, personal kong pupunta sa 75% na kalidad.



Ngayon, dahil pinapahalagahan din namin ang aktwal na kalidad ng larawan, hayaan mong ipakita ko sa iyo ang mga larawan:


tree_4624x3468_quality75.jpg


tree_4624x3468_quality25.jpg

Tulad ng nakikita mo, ang kalidad ay hindi masyadong naapektuhan, ngunit ang laki ng file ay mas maliit.

Ngayon, sinubukan kong gawin ang parehong sa PNG, at ito ang nakuha ko:


Kaya, mula sa 23501600B (22.413MiB) ay naging 22.2854MiB. Para sa isang JPEG, naging 1.295MiB ito mula 5.70226MiB. Para sa mga hindi nawawalang format gaya ng PNG, mas mahigpit ang switch ng kalidad.

Pagbabago ng laki ng mga Larawan

Ang pagbabago ng laki ng mga larawan ay isa pang paraan. Halimbawa:

convert tree_4624x3468.jpg -baguhin ang laki limampu % x50 % puno_4624x3468_resize50 % .jpg



Tulad ng malinaw mong nakikita, ang larawan na 4624×3468 ay 5.70226MiB, habang ang 2312×1734 ay 1.56287MiB lamang.

Ang Define Switch

Ang define switch ay sinusundan ng isang susi at ang ibinigay na halaga nito.

-define key{=value}...

Ang listahan ng mga posibleng key value ay makikita sa .

Para sa PNG, maaari mong gamitin ang png:compression-level=value. Ang value ay maaaring maging anuman mula 0 hanggang 9. Ang value na 0 ay magbibigay sa iyo ng pinakamababang compression, ngunit ito ay mabilis, at ang value na 9 ay magbibigay sa iyo ng pinakamahusay na compression ngunit ito ang pinakamabagal. Anything in between also goes.

Halimbawa:

convert tree_4624x3468.png - tukuyin png: compression-level= 9 puno_4624x3468_compression9.png



Sa karamihan ng mga pagkakataon, ang gusto ng isang programmer ay magtakda ng maximum na laki para sa isang larawan. Kaya, ipagpalagay na para sa isang pagkakataon na gusto mong magtakda ng maximum na laki para sa isang larawan. Maaari mong gamitin ang define switch para gawin ito.

-define jpeg:extent={size}

i-convert ang  tree_4624x3468.jpg - tukuyin jpeg: lawak =1MB tree_4624x3468_extent1MB.jpg



Tulad ng makikita mo sa larawan sa itaas, itinakda ito sa isang resolution na 4624×3468 at isang sukat na 0.897MiB. Kaya, tulad ng iyong hiniling, ang ImageMagick ay lumikha ng isang larawan na mas mababa sa maximum na laki na 1MB.

Strip Switch

Ang mga larawang kinukunan namin gamit ang mga camera ay kasama ng Metadata. Ang pag-alis sa Metadata ay maaari ding mag-clear ng ilang espasyo. Sa ImageMagick, ginagawa namin ito gamit ang strip switch.

convert tree_4624x3468.jpg - strip tree_strip.jpg



Dito, gaya ng nakikita mo, ang orihinal na larawan ay 4624×3468 at 5.7MiB. Ngunit ang imaheng natanggal ang Metadata nito ay 4.65MiB.

Lumipat ng Colorspace

Maaari mo ring subukang palitan ang colorspace. Sa unang pagkakataong ito, gagawin ko itong kulay abo.

convert tree_4624x3468.jpg -colorspace gray tree_gray.jpg -kalidad 75



Tulad ng nakikita mo, ang pagbawas ng laki ng imahe ay hindi masyadong malaki, ngunit mayroong isang pagbawas - mula 5.70226MiB hanggang 4.44997MiB.

Bilang kahalili, sinubukan ko rin ang sumusunod:

convert tree_4624x3468.png -colorspace kulay abong puno_graypng.png



Sa kaso ng PNG, ang orihinal kong larawan, iyon ay 4624×3468, ay 22.42MiB, ngunit kapag ginawa ko itong kulay abo, ito ay nagiging 8.88MiB.

Lumipat ng Kulay

Maaari ka ring mag-opt na baguhin ang bilang ng mga kulay na ginamit. Sa partikular na kaso na ito, 16 na kulay lang ang gagamitin ko sa isang PNG.

convert tree_4624x3468.png -mga kulay 16 puno_4624x3468_16colors.png



Ang orihinal na PNG ay 4624×3468 at 22.42MiB. Gayunpaman, nang binago ko ang mga kulay sa 16 lamang, ang imahe ay naging 4.27MiB ang laki. At ganito ang hitsura ng larawan:


puno_4624x3468_16colors.png

Paggamit ng Maramihang Switch

Ngayon, hindi mo na kailangang gumamit ng isang switch sa isang larawan! Maaari mong pagsamahin ang maraming switch hangga't gusto mo sa isang larawan.

Kaya, sa halimbawa 1, kukuha ako ng PNG na larawan ng isang puno. Ang orihinal na larawang ito ay 4624×3468 at 22.42MiB ang laki, at gagamit ako ng maraming switch at tingnan kung saan ako dadalhin.

convert tree_4624x3468.png - strip -baguhin ang laki 75 % x75 % - tukuyin png: compression-level= 9 -colorspace gray  tree_4624x3468_reducedsize.png



Kaya itong PNG, na may orihinal na sukat na 22.42MiB, ay naging isang larawan ng 5.3MiB. Ang resultang larawan ay humigit-kumulang 23% ng orihinal na laki.

Kaya sa susunod, tingnan natin ang isang JPG.

convert tree_4624x3468.jpg -kalidad 75 -baguhin ang laki 75 % x75 % - strip -mga kulay 16 tree_4624x3468_reducedsize.jpg



Kaya, dito, para sa JPG, nagpunta kami mula sa orihinal na sukat na 5.7MiB hanggang sa humigit-kumulang 2.2MiB para sa isang may kulay na imahe.

Ngunit kung hindi ito may kulay:

convert tree_4624x3468.jpg -kalidad 75 -baguhin ang laki 75 % x75 % - strip -colorspace kulay abong puno_4624x3468_reducedsize.jpg



Dito, nagpunta kami mula sa orihinal na sukat na 5.7MiB hanggang 1.6MiB para sa isang kulay abong larawan.

Kung gusto mo, maaari ka ring magtakda ng maximum na limitasyon sa laki. Ang punto ay maaari mong bawasan ang laki kung talagang itinakda mo ang iyong isip dito.

Konklusyon

Kapag nagsusulat ng code para sa isang partikular na layunin, madalas tayong gumamit ng mga larawan, at kung minsan, hindi natin kayang magkaroon ng mga larawang masyadong malaki ang laki. Sa ganitong mga kaso, ang pangunahing pokus ng programmer ay upang makahanap ng kompromiso sa pagitan ng laki ng larawan at kalidad ng larawan. Hindi namin gustong gumamit ng mga larawang masyadong mababa ang kalidad, ngunit hindi rin namin kayang magkaroon ng malalaking larawan. Kaya, kailangan namin ng mga paraan upang bawasan ang laki ng larawan. Nag-aalok ang ImageMagick ng iba't ibang paraan upang bawasan ang laki ng iyong larawan sa anyo ng iba't ibang switch – kalidad, baguhin ang laki, tukuyin, atbp. Maaari mong gamitin ang isa o higit pa sa mga ito upang ayusin ang laki ng larawan.