SourceForge

Portable Network Graphics

PNG Now

Original article you can find here http://pmt.sourceforge.net/pngcrush/

[DOWNLOAD]   [CHANGELOG]

Pngcrush är en optimerare för PNG (Portable Network Graphics) filer. Man kan köra den från en kommandorad i ett MSDOS fönster, samt från en UNIX eller LINUX kommandorad.



Först och främst använder man den för att reducera storlek på PNG IDAT dataströmmen tack olika sorters kompimeringsgrader och filter för PNG. Man kan också använda den inom eliminering av oönskade underordnade bitar eller tilläggning av vissa bitar inklusive gAMA, tRNS, iCCP, och textbitar.



I fall pngcrush är statiskt kopplad till en zlib kod, anses den vara försäkrad mot den zlib-1.1.3 "double-free" buggen tack möjligheten att både define och underkänna varje "double-free" försök. Pngcrush genererar ett så kallade "Decompression Error" meddelande och underkänner filen.



Pngcrush är en tillgänglig resurs som får användas, modifieras och omfördelas av vem som helst, och man behöver inte betala skatter för att göra det. Licensen som finns i pngcrush.c filen liknar den som finns i libpng filen, png.h, men är inte samma sak.



Källkoden för pngcrush är här. och binära programfiler, som är skapade av frivilliga tredje parter och kan vara ouppdaterade, är här. Pngcrush använder libpng och zlib, som finns i denna källa för pngcrush distribution. Man har modifierad de två sista lite grann:



  • libpng's pngconf.h är modifierad för att "#include pngcrush.h" som används
    • för att "#define out" delar av biblioteket man inte använder
    • # define PNG_SETJMP_NOT_SUPPORTED
    • # define PNG_ABORT()
    • för att utöka IDAT buffert storlek, och
  • zlib är modifierad för att sätta TOO_FAR macro på 32767 i deflate.c


Om du vill, kan du kompilera bara pngcrush.c från pngcrush källan och köra den med libpng och zlib som man hittar på PNG webbplats, www.libpng.org/pub/png/. Om du väljer det,



  • - ska iTXt biten inte fungera i fall din version på libpng har ingen möjlighet att göra det. Libpng hanterar iTXt biten om man har version 1.4.0 eller bättre.

  • - blir pngcrush utsatt för överströmning som man redan upplevt i augusti 2004, om du använder en libpng version utan programfix eller under 1.2.7/1.0.17.

  • - blir pngcrush utsatt för den zlib-1.1.3 double-free buggen, om du länkar pngcrush till zlib-1.1.3 och kör libpng versioner såsom1.0.x utan PNG_USER_MEM_SUPPORTED.

  • - blir TOO_FAR 4096 itsället för 32767 i deflate.c, som betyder att man får lite större filer som öppnas snabbare.

  • - blir det förutom omöjligt att läsa PNG filer med "Too many IDAT's".


Prekompilerade binära programfiler för Windows (som man kör i MSDOS fönster, baserade på DJGPP) och RISCOS plattformer (de kan vara ouppdaterade) är här



Det finns också ett alternativ med utvidgade möjligheter för pngcrush utveckling, av Cosmin Truta, som erbjuder lite fler funktioner och ett sökfönster med. Kolla http://www.cs.toronto.edu/~cosmin/pngtech/optipng/"



Pngcrush är en applikation för kommandoraden. Om du föredrar så kallade draggity-droppity GUI, hittar du några av dem, inklusive varianter med inbäddad pngcrush som kommer tillsammans med andra bildkomprimerare/optimerare för kommandoraden:



  • ImageOptim för Macs, gratis, GPLv2 licens

  • Trimage för Linux, Windows, Mac, gratis, MIT licens

 

The author of pngcrush is Glenn Randers-Pehrson, glennrp@users.sf.net





Most popular articles:


  • Photo-news blog

  • Keyword-pedia