This project startet 2004. Every year or so I coded a little bit on it just for fun. Almost a year ago, I said that I'm working on something. Now it's here.
I'm proud to announce pngopti to the public. It's based on Ruby and combines pngcrush, optipng, pngout, advdef and deflopt. Runs on GNU/Linux and Windows. And it supports multi-processing and bit-by-bit checking done by ImageMagick. Since it's network-based, you can distribute the work along other machines as well. It differs from pngslim in portability, error checking, tweaks and options. Andrew, I took your README as starting point for mine. Thanks very much!
The license is GPL v3. It most certainly has many bugs, so I already apologize for them. Suggestions and bug reports very welcome! The name pngopti is pretty lame, I'm looking for new suggestions ;)
Ken: pngout is not included since you prohibit redistribution. Would you give the ok to include it into the package as long as my program is free and non-commercial? Regarding PNGOUTWin, I could understand if you say no.
Download: version 0.64.2 2008-02-20
Edited by jokluge at
apegomp at
Re: New complete script combining all your favorite png tools
jokluge said at
The name pngopti is pretty lame, I'm looking for new suggestions ;)
PNGoatsi
jokluge at
apegomp said at
PNGoatsi
The one which will climb even the steepest cliffs towards the optimisation olymp? New suggestions are: optimipng and PrettyNiceGain.
David at
jokluge said at
Ken: pngout is not included since you prohibit redistribution.
Ken pointed me to this thread and asked me to respond.
I downloaded the file, and it does include PNGOUT. It would be best if you didn't include it in the distribution.
We appreciate the interest in PNGOUT, but Andrew is a trusted friend and has earned his credibility here. It was no problem to grant him permission to include PNGOUT in his free command-line utility. So it's not just about the various versions of PNGOUT.
From the documentation it looks like your tool is command-line based, so if you want to include support for PNGOUT if someone happens to put it in the right place, then it's not a problem. It just can't be included in the distribution.
The main problem we have with working with people we don't know is that they fail to pick up the latest build of PNGOUT, or even a recent build of PNGOUT, or even the updated version from a year ago that has a really cool tweak or fix, but instead ship with a several year old version and then people get the wrong impression of PNGOUT when they run into issues that have already been addressed.
Perhaps if we establish a greater level of trust over time then we can re-evaluate this.
jokluge at
Thanks for your kind reply. It's fixed. The included pngout was a mistake during packaging after some late bug-squatting. I have to write some scripts for automated packaging. I'm really sorry and apologize.
Edited by jokluge at
Zardalu at
I'm guessing that under Linux, it does not use DeflOpt?
A native Linux executable will probably be available soon. I can now successfully compile DeflOpt with gcc (g++) under Cygwin and successfully run that under Cygwin. I am still looking for people who use Linux and are willing to compile and test the Linux version.
Also, I guess I never included legal stuff like distribution information with DeflOpt. I don't mind if others distribute DeflOpt, as long as they credit me as the author.
Ben Jos.
Zardalu at
Right now, neither I nor DeflOpt are mentioned in the COPYRIGHTS file...
jokluge at
Ben Jos: You are honoured now in the README and COPYRIGHTS. I guess, I could not find any information how to deal with DeflOpt, so I left it out in the files. Thanks for the permission! The script uses DeflOpt under Linux with the help of wine. DeflOpt gets disabled when choosing a mincodes option, though ;) A native version would be much better, of course. I can test a native version, but do not have Makefile and C++ experience. If nobody steps up, you can contact me by PM or my mail adress from the README.
I uploaded a new version: 0.62.1 2007-12-05 (see first post) - fixes palette detection - added compatibility for buggy zlib and mobile phones - added logic if file not smaller after optimisation - a few bugfixes and enhancements - added DeflOpt copyright information This is not tested very much, I hope it does not break when using non-default options.
Edited by jokluge at
Zardalu at
DeflOpt is to be used only as the final step. Use other programs to make files smaller. Finally, use DeflOpt. It will make whatever other programs do a few bytes smaller still.
jokluge at
This is exactly what I'm using it for. The script is quite sophisticated. The basic steps:
1. pngcheck wether it's valid and to get information (pixel, palette, colors, interlaced ...) 2. pngcrush for deleting specified chunks 3. optipng with both methods and all filters 4. pngcheck + RMagick to check for validity (repeated after each tool from now on) 5. pngout with n-best filters from optipng, iteration of best block-size, randomized runs and some tweaks (c3, try 8-bit if bitdepth smaller, try RGB if paletted) 6. advdef which might help if pngout fails 7. deflopt
Zardalu at
jokluge said at
I can test a native version, but do not have Makefile and C++ experience.
I now have a native Linux version available for testing. See the DeflOpt thread for more details: http://www.jonof.id.au/forum/index.php?topic=1064.60
Ben Jos.
jokluge at
New version 0.63, see first post for link. Name is now optimipng.
0.63 2008-01-30 - wrote own chunk removal code - greyscale 8-bit widening - prettier statistic output - fixed recurseSub off and optipng compare error - no CRC32 on client side any more for greater performance - automated release packaging - deflOpt linux beta version
jokluge at
New version 0.64, see first post for link. Includes some suggestions from Terek Tonn from here.
0.64 2008-02-19 - README and usage() a bit more polished - moved source files - removed exit command - can handle whitespaces in paths now
jokluge at
New version 0.64.1, see first post for link.
0.64.1 2008-02-19 - whitespaces working in Windows now
jokluge at
New version 0.64.1, see first post for link.
0.64.2 2008-02-20 - fixed RMagick registry key handling - fixed environment path parsing in Windows