Just read a great howto on Perishable Press demonstrating a few ways to optimize PNG without losing image quality. I noticed that OptiPNG hadn’t been updated so I decided to compile it myself. I just got my build environment set up to compile x64 as well, so I decided to give that a shot while I was at it. I noticed a fairly significant decrease in optimization time with the x64 version on my hardware so I figured I’d share the binary. You mileage may vary, depending on your hardware, but here are my unscientific benchmarks based on a small 3DS rendering I did not long ago:

Source: 640×480 pixels, 4×16 bits/pixel, RGB+alpha

OptiPNG 0.6.2.1 x32:
Output IDAT size = 384602 bytes (10771 bytes decrease)
Output file size = 384659 bytes (11347 bytes = 2.87% decrease)

46.9 seconds

OptiPNG 0.6.2.1 x64:
Output IDAT size = 384602 bytes (10771 bytes decrease)
Output file size = 384659 bytes (11347 bytes = 2.87% decrease)

41.6 seconds

For very large and complex files, the time/size savings are marginal, but could be useful when processing a large batch of files. Another intersting feature of OptiPNG is it’s ability to work with 48bit PNG’s… a feature that many commercial tools seem to lack.

Source: 1920×1080 pixels, 4×16 bits/pixel, RGB+alpha

OptiPNG 0.6.2.1 x32:
Output IDAT size = 9816277 bytes (108632 bytes decrease)
Output file size = 9816334 bytes (123164 bytes = 1.24% decrease)

16 minutes, 46 seconds

OptiPNG 0.6.2.1 x64:
Output IDAT size = 9816277 bytes (108632 bytes decrease)
Output file size = 9816334 bytes (123164 bytes = 1.24% decrease)

16 minutes, 20 seconds

Here are the same files optimized by pngcrush for comparison *official win32 binary only as I was unable to get it compiled for either arch.

Small file (29.000 seconds):
Best pngcrush method = 124 (fm 5 zl 9 zs 1) for small.png
(2.65% IDAT reduction)
(2.80% filesize reduction)

CPU time used = 29.000 seconds (decoding 2.962,
encoding 25.868, other 0.170 seconds)

Large file (9.99835 minutes):
Best pngcrush method = 12 (fm 1 zl 2 zs 2) for large.png
(1.09% IDAT reduction)
(1.24% filesize reduction)

CPU time used = 599.901 seconds (decoding 25.295,
encoding 571.670, other 2.936 seconds)

Download OptiPNG 0.6.2.1 x64 Windows Binary

MD5: a7bb617dce7991b0814ed5c1534a0845
SHA1: 3d206584075b2ce555d2d7b3379e480101bccffd

This x64 package is not built or maintained by Cosmin TruĊ£a, the creator of OptiPNG. Please don’t bother him with bug reports or help requests unless you’ve confirmed the problem exists in his official packages as well.