ImageMagick – Fájlméretek csökkentése

Imagemagick Fajlmeretek Csokkentese



Egy szép és nagy kép szinte nagyszerű; általában óriási minőség társul hozzá. Azonban sok-sok eset van, amikor nem engedheti meg magának, hogy túl nagy méretű képek legyenek. Időnként csak egy megfelelő méretű képet vagy akár egy adott méretnél kisebb képet szeretne. Ilyen esetekben a programozó csak arra vágyik, hogy megtalálja a középutat a minőség és a méret között. Elméletileg, ha teljesen lemond a minőségről, akkor a fájlméret nem jelenthet problémát, de az igazi megoldás az, hogy kompromisszumot kell találni a minőség és a fájlméret között. Ebben az oktatóanyagban megvitatjuk a képek fájlméretének csökkentésének módjait az ImageMagick segítségével (a minőség túlzott sérelme nélkül).

Az ImageMagick telepítése

Ehhez szükségünk lesz az ImageMagickre, ezért először telepítsük:







sudo apt-get install képmágia



A minőségi kapcsoló

A fénykép/kép/videó méretének csökkentésének első és legegyszerűbb módja a fénykép minőségének csökkentése. A minőségkapcsoló a JPEG/MIFF/PNG tömörítési szintet jelzi. A JPEG és MPEG esetében az 1-es minőség a legmagasabb szintű tömörítést és a legalacsonyabb képminőséget jelenti, míg a 100 a legkisebb tömörítési szintet és a legjobb minőséget jelenti.



Nézzünk tehát egy példát; az általam készített kép egy fáról 4624×3468 felbontású és 5,70226MiB. Ez az eredeti kép, pontosabban JPEG.






Most az a lényeg, hogy csökkenteni akarjuk a kép méretét. Próbáljuk meg tehát a minőségkapcsoló beállításait egy kicsit másra állítani, és meglátjuk, mi történik.

konvertálni tree_4624x3468.jpg -minőség 75 tree_4624x3468_quality75.jpg
konvertálni tree_4624x3468.jpg -minőség 25 tree_4624x3468_quality25.jpg



Az egyik képnél 75-re, a másiknál ​​25-re csökkentettem a minőséget. Az eredeti kép 5,70226 MiB volt, de a 75-ös minőségű kép 2,74664 MiB lett, míg a 25-ös minősége 1358250 (1,295 MiB). Itt én személy szerint a 75%-os minőséget választanám.



Most, mivel minket is érdekel a fotó tényleges minősége, hadd mutassam meg a fotókat:


tree_4624x3468_quality75.jpg


tree_4624x3468_quality25.jpg

Mint látható, a minőség nem változott túlságosan, de a fájl mérete kisebb.

Most megpróbáltam ugyanezt a PNG-vel, és ez az, amit kaptam:


Így 23501600B-ról (22.413MiB) 22.2854MiB-ra ment. JPEG esetén 5,70226 MiB-ről 1,295 MiB-ra ment. A nem veszteséges formátumok, például a PNG esetében a minőségváltás sokkal keményebb.

Képek átméretezése

A képek átméretezése egy másik módszer. Például:

konvertálni tree_4624x3468.jpg - átméretezni ötven % x50 % tree_4624x3468_resize50 % .jpg



Amint jól látható, a 4624×3468-as kép 5,70226MiB volt, míg a 2312×1734-es csak 1,56287MiB.

A Definiálás kapcsoló

A define kapcsolót egy kulcs és annak adott értéke követi.

-define key{=value}…

A lehetséges kulcsértékek listája a címen található .

PNG esetén használhatja a png:compression-level=value parancsot. Az érték 0 és 9 között tetszőleges lehet. A 0 érték biztosítja a legkevesebb tömörítést, de gyors, a 9 pedig a legjobb, de a leglassabb tömörítést biztosítja. Ami a kettő között van, az is megy.

Például:

convert tree_4624x3468.png - határozza meg png:tömörítési szint= 9 tree_4624x3468_compression9.png



A legtöbb esetben a programozó azt akarja, hogy beállítsa a fénykép maximális méretét. Tehát tegyük fel, hogy egy fénykép maximális méretét szeretné beállítani. Ehhez használhatja a define kapcsolót.

-define jpeg:extent={size}

konvertálni  fa_4624x3468.jpg - határozza meg jpeg: mértéke =1MB tree_4624x3468_extent1MB.jpg



Ahogy a fenti képen is látszik, 4624×3468-as felbontásra és 0,897MiB méretre állította be. Tehát, ahogy kérted, az ImageMagick készített egy fényképet, amely kisebb, mint a maximális 1 MB.

Strip kapcsoló

A fényképezőgéppel készített képekhez metaadatok tartoznak. A metaadatok eltávolítása is felszabadíthat egy kis helyet. Az ImageMagickben ezt a szalagkapcsolóval tesszük.

konvertálni tree_4624x3468.jpg -szalag tree_strip.jpg



Itt, mint látható, az eredeti fotó 4624×3468 és 5.7MiB. De a kép, amelynek metaadatait törölték, 4,65 MiB.

Színtér kapcsoló

Megpróbálhatja felváltani a színteret is. Első esetben kiszürkítem.

konvertálni tree_4624x3468.jpg -színtér szürke fa_szürke.jpg -minőség 75



Mint látható, a képméret csökkentése nem túl nagy, de van csökkenés – 5,70226 MiB-ról 4,44997 MiB-ra.

Alternatív megoldásként a következőket is kipróbáltam:

convert tree_4624x3468.png -színtér szürke fa_graypng.png



PNG esetén az eredeti fotóm, ami 4624×3468, 22,42 MiB, de ha kiszürkítem, 8,88 MiB lesz.

Színek kapcsolója

A felhasznált színek számát is módosíthatja. Ebben a konkrét esetben csak 16 színt fogok használni egy PNG-n.

convert tree_4624x3468.png - színek 16 tree_4624x3468_16colors.png



Az eredeti PNG 4624×3468 és 22,42 MiB volt. Amikor azonban csak 16-ra változtattam a színeket, a kép mérete 4,27 MiB lett. A fotó pedig így néz ki:


tree_4624x3468_16colors.png

Több kapcsoló használata

Most már nem kell egyetlen kapcsolót sem használnod egy fényképen! Tetszőleges számú kapcsolót kombinálhat egy képen.

Tehát az 1. példában PNG-fotót fogok készíteni egy fáról. Ez az eredeti fotó 4624 × 3468 és 22,42 MiB méretű, és több kapcsolót fogok használni, és megnézem, hová visz.

convert tree_4624x3468.png -szalag - átméretezni 75 % x75 % - határozza meg png:tömörítési szint= 9 -színtér szürke fa_4624x3468_reducedsize.png



Így ebből a PNG-ből, eredeti 22,42 MiB mérettel, 5,3 MB-os kép lett. Az így kapott kép az eredeti méret 23%-a.

Tehát a következő lépésben nézzünk meg egy JPG-t.

konvertálni tree_4624x3468.jpg -minőség 75 - átméretezni 75 % x75 % -szalag - színek 16 fa_4624x3468_reducedsize.jpg



Tehát itt a JPG esetében az eredeti 5,7 MiB méretről körülbelül 2,2 MB-ra tértünk át egy színes kép esetében.

De ha nem lenne színes:

konvertálni tree_4624x3468.jpg -minőség 75 - átméretezni 75 % x75 % -szalag -színtér szürke fa_4624x3468_reducedsize.jpg



Itt az eredeti 5,7 MB-os méretről 1,6 MB-ra tértünk át a szürke képhez.

Ha akarta volna, a méretben is max korlátot szabhatott volna. A lényeg az, hogy csökkentheti a méretet, ha valóban rászánja magát.

Következtetés

Amikor egy adott célra kódot írunk, hajlamosak vagyunk képeket is használni, és néha egyszerűen nem engedhetjük meg magunknak, hogy túl nagy méretű képek legyenek. Ilyenkor a programozónak az a fő célja, hogy kompromisszumot találjon a kép mérete és a kép minősége között. Nem szeretnénk túl gyenge minőségű képeket használni, de azt sem engedhetjük meg magunknak, hogy nagy méretűek legyenek. Tehát módokra van szükségünk a kép méretének csökkentésére. Az ImageMagick számos módot kínál a kép méretének csökkentésére különféle kapcsolók formájában – minőség, átméretezés, definiálás stb. Ezek közül egyet vagy többet használhat a kép méretének beállításához.