Portál AbcLinuxu, 10. května 2025 02:26
convert -resize 700x600! obzazpuvodni. png novyobraz.pngjsem zmenšil obraz PNG asi na čtvrtinu. Přesto má asi třikrát více kolobajtů, než původní. Přitom bych očekával, že bude mít méně kB, než předtím. Čím to je a jak to ovlivním?
convert -resize 700x600! -quality 95 puvodni.png novy.png, vůbec není množství kB menší. A ať už místo 95 dám co chci, je to pořád stejné - pohybuje se to mezi 830KB - 900 KB.
#!/bin/bash mkdir zmensene for soubor in *.png ; do convert $soubor -resize 700x600! -quality 80 zmensene/$soubor doneMám v adresáři 62 obrazů, různě velkých a potřebuji z nich udělat všechny stejně velké, přičemž názvy musí být zachované. Pendrek ten skript ale funguje. V podadresáři "zmensene" sice mají všechny obrázky upravenou velikost, jak potřebuji, ale místo 62 obrázků je jich tam 123, protože se některé opakují. Taky se u většiny z nich zkomolily názvy, například "nedit4-t.png" se zkomolí na "nedit4-t12.png" a tak různě. Taky se různě popřehazovaly názvy. Prostě mi tam nadělal zmatky a binec. Podadresář "zmensene" i s obsahem jsem vymazal a skript spustil znovu. Zase úplně stejný výsledek. Ten skript bude zmetek a nejsem schopný ho opravit.
-depth 8
, protože defaultně vytvářejí 16-bitové PNG.
for soubor in *.pn* ; domísto
for soubor in *.png ; doMohlo to být tím? Další věc velikost souborů. Po zmenšení obrázků se velikost souborů zvětší, místo zmenší. Asi to bude pravda, že to bude kvůli zvýšení počtu barev. To bych v Gimpu opravit mohl, ale raději bych to udělal pomoci příkazového řádku, abych to mohl udělat hromadně pro více obrazů jedním příkazem nebo skriptem. A zase aby názvy souborů zůstaly zachované i v upravených obrazech.
for soubor in *.pn* ; domísto
for soubor in *.png ; doUž si to nepamatuji. Ale teď jsem přidal do skriptu přepínač -depth 8, opravdu pomohl, soubory mají asi třikrát menší objem dat, než ty zmenšené předtím, ale pořád to není ono, pořád je velikost dat o něco větší, než u nezmenšených obrázků.
Mohlo to být tím? Další věc velikost souborů. Po zmenšení obrázků se velikost souborů zvětší, místo zmenší. Asi to bude pravda, že to bude kvůli zvýšení počtu barev.A kvůli tomu aby jsme tady nemuseli hádat z křišťálové koule jako nějací věštci, jestli je to zvětšením bitového prostoru nebo převodem z palety na PNG24 jsem nahoře napsal ten příkaz identify (též z balíku ImageMagick), který zobrazí vlastnosti obrázku a mezi nimi i barevnou třídu a bitovou hloubku. Ale ne. Místo toho se tady furt bude vařit guláš. A úplně nejlepší by bylo poskytnout jeden vzorek ať si to může každý zkusit sám, zda-li mu to na jeho vlastním ImageMagicku bude též tvořit větší obrázky (klidně to totiž může být strukturou obrázku).
[david@localhost img]$ identify cb001-t.png cb001-t.png PNG 1092x793 1092x793+0+0 DirectClass 8-bit 132.975kb [david@localhost img]$Zmenšený obraz s použitím přepínače -depth 8:
[david@localhost zmensene]$ identify cb001-t.png cb001-t.png PNG 700x600 700x600+0+0 DirectClass 8-bit 144.902kb [david@localhost zmensene]$Zmenšený bez přepínače -depth 8:
[david@localhost zmensenepng]$ identify cb001-t.png cb001-t.png PNG 700x600 700x600+0+0 DirectClass 16-bit 368.328kb [david@localhost zmensenepng]$Příloha původní obraz.
$convert 161157-cb001-t-27641.png -unique-colors txt:- | head -n 1 # ImageMagick pixel enumeration: 14845,1,255,rgba $ convert 161157-cb001-t-27641_zmensene.png -unique-colors txt:- | head -n 1 # ImageMagick pixel enumeration: 20839,1,255,rgbaA pokud budeš kvantovat (zmenšovat počet barev), tak by bylo ještě vhodné pouvažovat o GIFu (pro málo barev má kapánek lepší algoritmy).
$ convert jambarevny.png -unique-colors txt:- | head -n 1 # ImageMagick pixel enumeration: 1831,1,65535,RGB $ convert jamcerny.png -unique-colors txt:- | head -n 1 # ImageMagick pixel enumeration: 47,1,65535,RGBPříloha.
convert obraz.png -unique-colors txt:- | head -n 1tady. Když si ten černý obraz zobrazím v Konqueroru, nevidím hodně barev, vidím jenom černou a bílou, dokonce ani mezistupně šedé nevidím. Teď jsem si ten obraz při zobrazení v Konqueroru zkusil i zvětšovat, abych se přesvědčil, jestli tam nemám rozmazané místa. Rozmazaného nic sice nevidím, ale jsou tam trochu nepatrné fleky. Tak ta velikost souboru bude asi kvůli tomu. Ty fleky jsou ty artefakty?
-rw-rw-r-- 1 petrvlasic petrvlasic 26678 2010-08-13 16:35 jambarevny.png -rw-r--r-- 1 petrvlasic petrvlasic 3169 2010-08-14 13:09 jambaw.png -rw-rw-r-- 1 petrvlasic petrvlasic 42726 2010-08-13 16:34 jamcerny.png $ identify jamcerny.png jamcerny.png PNG 417x476 417x476+0+0 8-bit DirectClass 41.7KiB 0.010u 0:00.000 $ identify jambaw.png jambaw.png PNG 417x476 417x476+0+0 8-bit PseudoClass 2c 3.09KiB 0.010u 0:00.000Právě z toho důvodu počítačovou grafiku nikdy (a nebo fakt jen v nejnutnějších případech) neukládáme do JPEGu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.