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 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.