After running PNGSquash on a directory containing 10 PNGs totaling 456KB (which had already been optimized with pngcrush from the command line), it shrunk them to 432KB using the smallest squash level. The processing time was around 4m20s on a MacBook Pro with 3GB RAM.
A similar tool is ImageOptim
http://pornel.net/imageoptim/en ,
an open souce GUI for the following PNG / JPG optimizers: AdvPNG, OptiPNG, PngCrush, JpegOptim, jpegtran, and optionally PNGOUT.
Just curious about PNGOUT - did you get permission to bundle it with your app? Their license http://www.advsys.net/ken/utils.htm#pngoutkziplicense seems pretty restrictive: "Redistributing, repackaging, or reusing the PNGOUT or KZIP executable is prohibited without the express consent of Ardfry Imaging, LLC, and a formal business agreement."
The processing time was around 4m20s on a MacBook Pro with 3GB RAM.
Is this good or bad? One possible speedup I could use is to compress more than one image at a time, although the progress indicator would probably have to become asynchronous.
Just curious about PNGOUT - did you get permission to bundle it with your app? Their license http://www.advsys.net/ken/utils.htm#pngoutkziplicense seems pretty restrictive: "Redistributing, repackaging, or reusing the PNGOUT or KZIP executable is prohibited without the express consent of Ardfry Imaging, LLC, and a formal business agreement.
No I didn't, thanks for pointing this out. I'll remove it for now; didn't realize their license had that restriction. That's pretty lame :\.
Could you not take the ffmpegX route and have the people download the pngout on their own? If they do not download it you can still make the program work without pngout but for the people that want the smallest filesize they can take the additional steps to download it and put it in the correct location.
Also, I think that having it finish quicker is >> correctly indicated timeline.
Alternately, just pop up a confirmation dialog stating "I hereby confirm that I am requesting of my own volition to download PNGOUT to aid the functionality of this program," and then download it automatically.
The license clearly specifies that "reusing" is itself not allowed without permission, so that doesn't change anything...his program still uses pngout without permission, and it's his (the programmmer's) use that is at issue here, not the end user.
Feature suggestion: Tell me which of the 4 compressors gave the best result.
This is a good idea, but I can't technically do this currently. The compressors are run one after another (it's essentially like "pngcrush infile outfile && optipng outfile && advpng outfile && pngout outfile"), so there is no real "best result", it just gets a bit smaller each time.
Also, since the point of testing 4 png compressors is to get the smallest size possible, why not use "smallest" as the default setting?
That's a good point, I've just committed the change :)
Have you tested that the sequence is optimal? What if pngcrush changes the image in a way that will make on of the later steps miss it's most promising optimization? Oh the joys of combinatorial explosion...
I compared ImageOptim and PNGSquash and PNGSquash made both files about 4KB smaller than ImageOptim did, both were using the highest optimization settings for smallest file size.
I had PNGOUT installed too.
I like PNGSquash and I think I'll use it to optimize all my images. The only features I'd like included that ImageOptim does have are the ability to drag a folder into the window, so I don't have to pick out the pngs from a project I'm working on, and an auto-updater. Growl support would be nice as well.
Also, I agree with weaksauce's comment, you could just have the user download and install pngout separately, just tell them to drag it to /usr/bin and look in that folder for it, that's the usual location for it anyways. ImageOptim does this already.
- You linked me to a source control repository instead of a product page.
- There's a download button, but it seems to want to give me source code.
- reading comments here, it seems that the source is actually only compilable on a Mac.
In short, you have not produced an App. Even if I wanted to use your product, and had the right system to use it on, I couldn't.
If you want this to be software the people use, you'll need to register a domain name and build a site for it. That site will need to describe what it does (which, incidentally, your github description fails to do), and provide me with a prominent Download button that links to an installer or at least an executable.
Once you do that, please post it back here, and I'll be happy to give you feedback.
If you scroll down there's an executable download, description and screenshots. Kind of counter-intuitive I know (although there is at least one other app doing it http://github.com/rentzsch/clicktoflash), but there isn't really any other way to do it on github. It is Mac-only but I don't think that disqualifies it from being an app.
I have registered a domain name (http://pngsquash.com), but it currently just redirects to the github page because I thought that was adequate.
There is a row of buttons at the top of the page, one of which is labeled "download" (though it seems to have lower importance on the page than, say, "fork"). Clicking that gave me a pile of source code. Are you saying that the text link further down the page is hooked up directly to the executable?
Definitely put up a real site for this if you care about it.
You linked me to a source control repository instead of a product page.
Have you never downloaded apps from SourceForge, Google Code, GitHub, etc? It's really not that unusual or difficult.
There's a download button, but it seems to want to give me source code.
No, the download button gives you PNGSquash.tar.gz, which contains PNGSquash.app, the application, not source code. Since you are opening it on an operating system other than OS X, it opens like a directory when double clicked. http://en.wikipedia.org/wiki/APP_(file_format)
reading comments here, it seems that the source is actually only compilable on a Mac.
Yes, it is a Mac app - at the top of the page it says "Description: A PNG compressor app for OS X." And no, it does not require compiling if you download the binary (the huge "Download" link next to the logo).
In short, you have not produced an App.
Yes he has. Witness all of the comments from folks who have used it.
Even if I wanted to use your product, and had the right system to use it on, I couldn't.
Try not to blame the messenger. He asked to have his application reviewed, so I reviewed it. That was my customer experience trying to download and install his product.
Here, for a counterexample, is the homepage for a different open source software product:
You'll notice some key differences. That page describes exactly what the software does and how it will benefit me as a user. It includes a prominent link to an installer right off the page.
That's what the public face of a software product should look like. That's the message I was trying to convey to the original poster. Dropping potential users off at Github is a dead-end for most of them. An explanation as to why can be found here:
A similar tool is ImageOptim http://pornel.net/imageoptim/en , an open souce GUI for the following PNG / JPG optimizers: AdvPNG, OptiPNG, PngCrush, JpegOptim, jpegtran, and optionally PNGOUT.
Just curious about PNGOUT - did you get permission to bundle it with your app? Their license http://www.advsys.net/ken/utils.htm#pngoutkziplicense seems pretty restrictive: "Redistributing, repackaging, or reusing the PNGOUT or KZIP executable is prohibited without the express consent of Ardfry Imaging, LLC, and a formal business agreement."