ImageMagick – failų dydžių mažinimas

Imagemagick Failu Dydziu Mazinimas



Gražus ir didelis paveikslas yra tiesiog puikus; tai dažniausiai lydi nepaprasta kokybė. Tačiau yra daug, daug kartų, kai negalite sau leisti turėti per didelių nuotraukų. Kartais viskas, ko norite, yra tinkamo dydžio paveikslėlis arba netgi mažesnis nei tam tikras dydis. Tokiais atvejais programuotojas tik nori rasti aukso vidurį tarp kokybės ir dydžio. Teoriškai, jei visiškai atsisakysite kokybės, failo dydis neturėtų kelti problemų, tačiau iš tikrųjų reikia rasti kompromisą tarp kokybės ir failo dydžio. Šioje pamokoje aptarsime būdus, kaip sumažinti paveikslėlių failo dydį naudojant „ImageMagick“ (per daug nepakenkiant kokybei).

„ImageMagick“ diegimas

Tam mums reikės „ImageMagick“, todėl pirmiausia įdiekite jį:







sudo apt-get install imagemagick



Kokybės jungiklis

Pirmas ir lengviausias būdas sumažinti nuotraukos/paveikslėlio/vaizdo įrašo dydį – sumažinti nuotraukos kokybę. Kokybės jungiklis rodo JPEG/MIFF/PNG glaudinimo lygį. JPEG ir MPEG atveju 1 kokybė reiškia aukščiausią suspaudimo lygį ir žemiausią vaizdo kokybę, o 100 – mažiausią suspaudimo lygį ir geriausią kokybę.



Taigi pažvelkime į pavyzdį; nuotrauka, kurią padariau iš medžio, yra 4624 × 3468 skiriamoji geba ir yra 5,70226 MiB. Tai yra originali nuotrauka, JPEG, tiksliau.






Dabar esmė ta, kad norime sumažinti vaizdo dydį. Taigi pabandykime nustatyti šiek tiek kitokius kokybės jungiklio nustatymus ir pažiūrėkime, kas atsitiks.

konvertuoti medis_4624x3468.jpg -kokybe 75 medis_4624x3468_quality75.jpg
konvertuoti medis_4624x3468.jpg -kokybe 25 medis_4624x3468_quality25.jpg



Vienos nuotraukos kokybę sumažinau iki 75, kitos - 25. Pradinis vaizdas buvo 5,70226 MiB, bet 75 kokybės vaizdas tapo 2,74664 MiB, o 25 kokybės vaizdas tapo 1358 250 (1,295 MiB). Čia aš asmeniškai rinkčiausi 75% kokybę.



Kadangi mums taip pat rūpi tikroji nuotraukos kokybė, leiskite jums parodyti nuotraukas:


medis_4624x3468_quality75.jpg


medis_4624x3468_quality25.jpg

Kaip matote, kokybei per daug įtakos neturėjo, tačiau failo dydis yra mažesnis.

Dabar bandžiau tą patį padaryti su PNG, ir štai ką gavau:


Taigi, nuo 23501600B (22.413MiB) iki 22.2854MiB. JPEG formatu jis padidėjo nuo 5,70226 MiB iki 1,295 MiB. Neprarastingiems formatams, pvz., PNG, kokybės perjungimas yra daug sunkesnis.

Nuotraukų dydžio keitimas

Nuotraukų dydžio keitimas yra dar vienas būdas. Pavyzdžiui:

konvertuoti medis_4624x3468.jpg - pakeisti dydį penkiasdešimt % x50 % medis_4624x3468_dydis50 % .jpg



Kaip aiškiai matote, 4624 × 3468 nuotrauka buvo 5,70226 MiB, o 2312 × 1734 - tik 1,56287 MiB.

Apibrėžimo jungiklis

Po apibrėžimo jungiklio seka klavišas ir nurodyta jo reikšmė.

-apibūdinti raktą{=value}…

Galimų pagrindinių reikšmių sąrašą galite rasti adresu .

PNG galite naudoti png:compression-level=value. Reikšmė gali būti bet kokia nuo 0 iki 9. 0 reikšmė suteiks jums mažiausiai suspaudimo, bet tai greita, o vertė 9 užtikrins geriausią glaudinimą, bet lėčiausią. Viskas tarp jų taip pat tinka.

Pavyzdžiui:

konvertuoti medis_4624x3468.png - apibrėžti png:compression-level= 9 tree_4624x3468_compression9.png



Daugeliu atvejų programuotojas nori nustatyti maksimalų nuotraukos dydį. Taigi, tarkime, kad norite nustatyti maksimalų nuotraukos dydį. Norėdami tai padaryti, galite naudoti apibrėžimo jungiklį.

-define jpeg:extent={size}

konvertuoti tree_4624x3468.jpg - apibrėžti jpeg: apimtis =1MB medis_4624x3468_extent1MB.jpg



Kaip matote aukščiau esančiame paveikslėlyje, jis nustatė 4624 × 3468 skiriamąją gebą ir 0,897 MB dydį. Taigi, kaip prašėte, „ImageMagick“ sukūrė nuotrauką, kurios dydis yra mažesnis nei maksimalus 1 MB dydis.

Juostelės jungiklis

Fotoaparatais daromose nuotraukose pateikiami metaduomenys. Metaduomenų pašalinimas taip pat gali atlaisvinti vietos. „ImageMagick“ tai darome naudodami juostelės jungiklį.

konvertuoti medis_4624x3468.jpg -juostele tree_strip.jpg



Čia, kaip matote, originali nuotrauka yra 4624 × 3468 ir 5,7 MiB. Tačiau vaizdas, kurio metaduomenys buvo pašalinti, yra 4,65 MiB.

Spalvų erdvės jungiklis

Taip pat galite pabandyti pakeisti spalvų erdvę. Šiuo pirmuoju atveju aš jį paversiu pilka.

konvertuoti medis_4624x3468.jpg - spalvų erdvė pilkas medis_pilkas.jpg - kokybė 75



Kaip matote, vaizdo dydžio sumažinimas nėra per didelis, tačiau yra sumažinimas - nuo 5,70226MiB iki 4,44997MiB.

Arba aš taip pat išbandžiau šiuos veiksmus:

konvertuoti medis_4624x3468.png - spalvų erdvė pilkas medis_graypng.png



PNG atveju mano originali nuotrauka, ty 4624 × 3468, yra 22,42 MiB, bet kai paverčiau ją pilka, ji tampa 8,88 MB.

Spalvų jungiklis

Taip pat galite pasirinkti pakeisti naudojamų spalvų skaičių. Šiuo konkrečiu atveju aš naudosiu tik 16 spalvų PNG.

konvertuoti medis_4624x3468.png -spalvos 16 tree_4624x3468_16colors.png



Pradinis PNG dydis buvo 4624 × 3468 ir 22,42 MB. Tačiau kai pakeičiau spalvas tik į 16, vaizdas tapo 4,27 MiB dydžio. O nuotrauka atrodo taip:


tree_4624x3468_16colors.png

Kelių jungiklių naudojimas

Dabar nuotraukoje nereikia naudoti vieno jungiklio! Nuotraukoje galite sujungti tiek jungiklių, kiek norite.

Taigi, 1 pavyzdyje, aš padarysiu medžio PNG nuotrauką. Ši originali nuotrauka yra 4624 × 3468 ir 22,42 MB dydžio. Aš naudosiu kelis jungiklius ir pažiūrėsiu, kur tai mane nuves.

konvertuoti medis_4624x3468.png -juostele - pakeisti dydį 75 % x75 % - apibrėžti png:compression-level= 9 - spalvų erdvė pilkas tree_4624x3468_reducedsize.png



Taigi šis PNG, kurio pradinis dydis yra 22,42 MiB, virto 5,3 MiB paveikslėliu. Gautas paveikslėlis yra apie 23% pradinio dydžio.

Taigi toliau pažiūrėkime JPG.

konvertuoti medis_4624x3468.jpg -kokybe 75 - pakeisti dydį 75 % x75 % -juostele -spalvos 16 medis_4624x3468_reducedsize.jpg



Taigi, JPG formatu pasirinkome nuo pradinio 5,7 MB dydžio iki maždaug 2, 2 MB spalvoto vaizdo.

Bet jei jis nebūtų spalvotas:

konvertuoti medis_4624x3468.jpg -kokybe 75 - pakeisti dydį 75 % x75 % -juostele - spalvų erdvė pilkas medis_4624x3468_reducedsize.jpg



Čia mes pakeitėme nuo pradinio 5,7 MiB dydžio iki 1,6 MiB pilko vaizdo.

Jei būtumėte norėję, taip pat galėtumėte nustatyti maksimalų dydžio limitą. Esmė ta, kad galite sumažinti dydį, jei tikrai tam nusiteiksite.

Išvada

Rašydami kodą tam tikram tikslui, mes taip pat linkę naudoti paveikslėlius, o kartais tiesiog negalime sau leisti turėti per didelių nuotraukų. Tokiais atvejais pagrindinis programuotojo tikslas yra rasti kompromisą tarp nuotraukos dydžio ir vaizdo kokybės. Nenorime naudoti per žemos kokybės nuotraukų, tačiau taip pat negalime sau leisti turėti didelių dydžių nuotraukų. Taigi, mums reikia būdų, kaip sumažinti nuotraukos dydį. „ImageMagick“ siūlo įvairius būdus, kaip sumažinti nuotraukos dydį įvairiais jungikliais – kokybės, dydžio keitimo, apibrėžimo ir kt. Galite naudoti vieną ar kelis iš jų, norėdami pakoreguoti nuotraukos dydį.