png rozdrtit | |
---|---|
Typ | Optimalizátor obrazu |
Autor | Glenn Randers Pehrson |
Zapsáno v | C |
Operační systém | Multiplatformní software |
Nejnovější verze | 1.7.12 ( 6.08.2010 ) _ |
Licence | libpng licence [d] |
webová stránka | pmt.sourceforge.net/pngc… |
pngcrush je bezplatný a open source nástroj. Používá se k optimalizaci obrazových filtrů PNG . Poskytuje možnost zmenšit velikost souboru bez ztráty – to znamená, že „rozdrcené“ obrázky budou mít kvalitu původního obrázku.
Hlavním účelem pngcrush je zmenšit velikost PNG pomocí datového toku IDAT pomocí kombinace kompresních metod a delta filtrů. Pngcrush však lze použít i pro jiné akce s obrázky PNG, jako je změna hloubky obrázku nebo odstranění nežádoucích pomocných bloků, přidání určitých bloků včetně gAMA , tRNS , iCCP a textového bloku.
Hlavním použitím pngcrush je zmenšení velikosti dat sekce IDAT obsažených v obrázku.
Data pixelů v souboru PNG jsou komprimována pomocí algoritmu LZ77 (který najde opakované sekvence bajtů ve zdrojovém souboru), poté jsou komprimována pomocí Huffmanova algoritmu . Tato kombinace nám připomíná algoritmus DEFLATE . Před kompresí je na data pixelů aplikován bezpečný delta filtr
Existuje 5 možných typů filtrů, které lze použít samostatně pro každý krok skenování. V zásadě existuje několik možných způsobů vyhledávání shod LZ77. Existuje tedy obrovské množství různých kombinací, jak lze obrázek komprimovat. Který z nich bude komprimovat lépe, závisí na vlastnostech samotného obrázku [1]
pngcrush komprimuje obrázek pomocí několika různých kombinací a poté uloží nejmenší z výsledných souborů [2] Protože není možné implementovat všechny možné kombinace, pngcrush používá k výběru cesty určitou heuristiku.
Nejjednodušeji lze zavolat pngcrush k vytvoření „rozdrceného“ souboru z neoptimalizovaného souboru pomocí následujícího formátu pomocí příkazu:
pngcrush imageIn.png imageOut.pngVe výchozím nastavení používá pngcrush pouze několik běžných metod komprese souborů. Pro kompresi hrubou silou lze použít volitelnou metodu komprese „-brute“ , která může používat více než 100 různých metod komprese.
Jednou z funkcí pngcrush je možnost odstranit všechna data korekce barev (gama, vyvážení bílé, barevný profil ICC, standardní profil RGB) ze souboru PNG pomocí následujících příkazů:
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.pngProtože většina grafického softwaru vkládá další data korekce barev, která nejsou běžně potřeba. Smazání bude mít za následek 40% zmenšení velikosti původního souboru. Pngcrush může bezeztrátově snížit bitovou hloubku obrázku nebo použít barevnou paletu v případě, že to povede ke kompresi velikosti.
Všechny pomocné bloky a text lze odstranit příkazem:
pngcrush -rem gAMA -rem alla -rem text InputFile.png OutputFile.pngPngcrush lze použít k barevnému označení obrázku. Pokud je použito 10 barev, ale barevná paleta je 256 (8 bitů), pngcrush bude schopen převést paletu na 4bitovou a zkrátit ji na 10 barev:
pngcrush -bit_depth 4 -plte_len 10 image1.png image2.pngTaké pngcrush lze použít ke změně barvy. U skutečného barevného obrazu se změnou sytosti z 2 na 0( -c 0) změní na černobílý (stupně šedi). Takový obrázek je výrazně menší než originál, protože kromě kanálu Alpha je na pixel použit pouze jeden 8bitový kanál, nikoli tři. Černobílý obrázek je také mnohem menší, protože nevyžaduje barevnou paletu . U plnobarevných obrázků změna typu barvy z 6 na 2 odstraní alfa kanál.
Obrázky PNG obsahují bloky s informacemi o obrázku, jako je rozlišení (fyzický blok), datum poslední úpravy (blok tIME) a textová metadata (textový blok a jeho varianty). Pomocí pngcrush může uživatel upravit nebo odstranit tyto pomocné bloky:
pngcrush -res 96 -rem time -text b "Software" "pngcrush" image1.png image2.pngTento příkaz změní rozlišení na 96 dpi , odstraní časová razítka a vlastnost "image creator" na "pngcrush".
Podobné kompresory PNG:
Podobné programy pro JPG: