6 ms·
Comparison of lossless PNG compression tools
- chaosmachine 17y agoOn rare occasions, running your image through PNGOUT a second time will save you an extra couple bytes.
- imurray 17y agoIf that desperate, one could also try: for a in 0 128 192 256 512 1024 ; do pngout file.png -b$a ; done (Or the equivalent for your favorite shell.)
- Zev 17y agoThere doesn't seem to be a Mac or Linux port for PNGOut; the link redirects to a forum about GTA. And isn't PunyPNG a web front-end for OptiPNG? That would explain the lack of any real differences between the two. Also, would be good to know what flags were used when compressing the images. // edit: See @ccollins post for a link to Mac/Linux/BSD ports of PNGOut.
- ccollins 17y agoLinux, BSD, OSX ports of PNGOut: http://www.jonof.id.au/kenutils http://www.jonof.id.au/kenutils
- godDLL 17y agoMacOS X droplet GUI arount PNGOut: http://www.gingerbeardman.com/pngenie/ http://www.gingerbeardman.com/pngenie/
- ramchip 17y agoTitle made we wonder if there was such a think as lossy PNG - apparently yes: http://membled.com/work/apps/lossy_png/ http://membled.com/work/apps/lossy_png/
- DarkShikari 17y agoAny lossless format can be made lossy by simply performing a lossy pre-pass prior to the lossless compression. The real challenge is finding a good way to perform the pre-pass; it's easy to pick a simple naive method, but optimality is likely exponential-time, or if one is lucky, polynomial with an intractable constant (using trellis). The fact that PNG uses a dictionary-based compressor instead of a PPMD-like system likely makes the problem much harder.
- ars 17y agoWhat does PNGout do different? I tried optipng with -o9, which is an exhaustive search, and it didn't make the file as small as the PNGout one. I though -o9 tried every possible method of encoding the png, but I guess it's missing something. Edit: I found my answer: http://optipng.sourceforge.net/pngtech/optipng.html http://optipng.sourceforge.net/pngtech/optipng.html - apparently the png filter can be applied to each row independently. But I think optipng uses the same filter for the entire image, not each row.
- imurray 17y agoFrom optipng’s todo.txt: - Compression improvements: Use zlib's deflateTune(). Use 7zip's powerful deflation engine. (This is not possible with libpng, so a custom encoder is needed.) AdvanceCOMP uses the same deflate code as 7zip. PNGout uses a deflation engine that claims to be better than 7zip's.
- jules 17y agoMaybe there should be a wrapper that runs them all and spits out the smallest file?
- kilian 17y agoThere is one: http://imageoptim.pornel.net/ http://imageoptim.pornel.net/ (not mine) unfortunately it's mac-only. If I have time left I might try making a linux (Qt?) version myself in the future.