Thank you. Gifsicle was my mistake, so it is fixed.
Regarding pngquant and jpeg-recompress, they are not distributing 32 bit binaries, so not much I can do.
https://sourceforge.net/p/nikkhokkho/code/1546/
AcidBurn (1st February 2020)
Hi Nikkho, why don't you actually use Pingo for optimizing PNG's when "keep metadata" is enabled? Does it actually remove metadata?
nikkho (9th September 2020)
Thanks. When I added pingo lots of time ago it did not keep metadata. I checked and now it supports -strip flag, so I have updated it.
https://sourceforge.net/p/nikkhokkho/code/1579/
I was unexpectedly kicked out of many communities for plagiarism.
Upon learning, I realized that this is due to the mention of my old nickname in your changelog.
I think you should change the changelog.
I never said that any of the tools you use were written by me. I only recommended you what I was familiar with, mainly from the demoscene.
PCXLite wrote by Sol, as did some of your set. Sol webpage - https://sol.gfxile.net/
/Thank
can you point to PCXlite - I don`t see it on his site?
necros (28th September 2020)
@nikkho: https://github.com/colbyn/imager-bench-2019-11-2
It's obviously lossy but almost imperceptible, and the gains are on a league of its own. Truly impressive.
What do the quality metrics look like? butteraugli, DSSIM, etc.? This is very far from imperceptible by my eye.
@dado @MegaByte:
You're right, in those images from the benchmark the difference is quite noticeable. Nevertheless, those are artificial images, the kind you might get from a screenshot, and for that JPG is not really good. IDK why did they use them, but I'd rather pick PNG for that particular case.
In my personal tests I used scanned pages from books and photographs from the real world (already lossy). I didn't use any quality metric, it's just my subjective opinion after comparing them at 100% zoom and seeing no noticeable difference. See attachment for an example.
I must admit, I was impressed by your example as well. But when I used GIMP to save the image at a target size of 243 KiB, I couldn’t see a noticeable difference at 100% zoom either, even though GIMP’s JPG encoder is far from optimal, so … not convinced (yet). This really needs a metric.
Didn't think of that... Maybe talk to the developers? They responded very quickly to my pull request.
In any case, I don't know if GIMP can be used from a script, or if the results are consistent.... Maybe worth investigating, especially for web devs
Regarding the JPG CMYK bug and after testing with this sample
"https://en.wikipedia.org/wiki/File:Channel_digital_image_CMYK_color.jpg" the following programs were tested:
jpegoptim ok
jpeg-recompress skipped it.
jpegtran ok
mozjpegtran ok
Leanify ok
pingo convert the CMYK to RGB
ECT ok
Jhead ruined the colors <====== this one.
Guetzli skipped the file.
Mike (30th December 2021)
What are layered PDFs, what can be wrong while processing it? (Skip layered PDFs option caught my eye)
P.S. FO calls Commandline: rehuff.exe when in fact it`s absent - was replaced by rehuff_theora I guess?
Thank you for the findings. I have implemented a quick and dirty CMYK detection and prevented jhead execution if so.
https://sourceforge.net/p/nikkhokkho/code/1671/
danlock (27th February 2022)
Problem is that if processing a layered PDF because some content groups would be removed.
Regarding rehuff, you are right. That was a bug. It has been solved: https://sourceforge.net/p/nikkhokkho/code/1672/
necros (1st February 2022)
Just a quick update after 13.90.
15.70 - 2022/04/20
- Added support to AVIF images using ImageMagick.
- Speedup WEBP compression because dwebp is not needed anymore.
- Improved WEBP lossless compression ratio.
- Improved WEBP losy compression ratio by adding cwebp to the webp tool chain.
- Fixed issue with BMP transparencies with Image Worsener by adding -opt bmp:version=auto (Devedse) #111.
- Reduced mutool optimization aggresivity from -gggg to -g in order to increase compatibility (Jacobov Landau) #116.
- Updated Ghostscript to 9.56.1.
- Updated ffmpeg to 5.0.1.
- Updated ImageMagick to 7.1.0.29 with HDRI support.
- Updated ImageW to 1.3.4 test.
- Added Korean translation. Thank you Jaehyung Lee.
- Updated SQLite to 3.38.2 x86 and x64 Visual C++ 2022 custom builds.
- Updated EXE compatibility to PatchPE 1.35.
15.60 - 2022/03/24
- Improved optimization ratio thanks to moving Pingo at top of JPEG toolchain for better results (Dm Kh) #113.
- Fixed automatically disabling BeepWhenDone when launched via commandline to allow a proper exit.
- Fixed missing VCRUNTIME140_1.dll that was needed by optipng (Devedse) #112.
- Fixed empty messagebox when closing FO.
- Fixed pingo inverted logic that per default removes metadata (Devedse) #110.
- Optimized and updated pingo settings.
- Improved ECT execution by adding --mt-file (multithreading file).
- Updated AdvanceCOMP to 2.16 (custom built by snow).
- Updated SQLite to 3.38.1 x86 and x64 Visual C++ 2022 custom builds.
- Updated pingo to 1.00 a14 x64 version.
- Updated ImageMagick to 7.1.0.25 with HDRI support.
- Updated libwebp to 1.2.2 x64.
- Upgraded to C++ Builder 11.1 (Alexandria).
- Some minor optimizations and code cleanup.
15.50 - 2022/02/09
- Fixed crash in some JPEG due to new CMYK detection code (#10.
15.40 - 2022/02/07
- Added detection of CMYK JPEG images.
- Fixed some compiler warnings (Jean-Marc Dupuis).
- Switched from regular Guetzli to guetzli-cuda-opencl because it has a recent build and with --c it is faster (#107).
- Execute Guetzli with GPU acceletation if available to Guetzli (Alexey Pavlov).
- Avoid JPEG CMYK corruption by excluding jhead in those types.
- Properly execute rehuff_theora instead of removed rehuff in OGG files.
- Enabled pingo support for JPEG images when copy metadata is enabled.
- Updated SQLite to 3.37.2 x86 and x64 Visual C++ 2022 custom builds.
- Updated mp4v2 x86 and x64 to 5.0.1 Visual C++ 2022 custom builds.
- Updated pingo to 1.00 a8 x64 version.
- Updated cpdf to 2.5.1.
- Updated ffmpeg to 5.0.
- Updated ImageMagick to 7.1.0.23 with HDRI support.
- Updated Leanify to 0.4.3.270.
- Updated ImageWorsener to 1.3.4.
- Updated to Minify 2.10.0 x64.
- Updated libwebp to 1.2.2 RC2 x64.
- Updated to cppcheck 2.7.
15.30 - 2021/12/28
- Fixed wrong PNGOptimized version (Edward Truong https://sourceforge.net/p/nikkhokkho...ad/02b2fe8882/)
- Updated pingo to 1.00 a5 x64 version.
- Upgraded distributions to 7-Zip 21.07.
15.20 - 2021/12/27
- Try to make executables compatible with Windows XP.
- Some code tweaks (thanks Jean-Marc Dupuis).
- Improved DPI support in Windows 10 or later.
- Updated PngOptimizer x64 to 2.7.
- Updated pngquant to 2.17.0.
- Updated Ghostscript to 9.55.0.
- Updated ffmpeg to 4.4.1.
- Updated to mutool 1.19.
- Upgraded to C++ Builder 11 Update 1.
- Updated to cppcheck 2.6.
- Updated to NSIS 3.08.
- Upgraded distributions to 7-Zip 21.06.
- Some minor optimizations and code cleanup.
15.10 - 2021/09/11
- Added .CAB and SFXCAB file detection by contents.
- Added skipping of SFX CAB EXE installers (JoeW).
- Do not run 64 bit plugins with FO 32 bit, even if under Win64.
- Updated pingo to 0.99.5 x64 version.
- Updaded Tidy to 5.8.0 x64.
- Updated libwebp to 1.2.1 RC2 x64.
- Updated gifsicle to 1.93 (custom build).
- Upgraded to C++ Builder 11 (Alexandria).
- Updated to cppcheck 2.5.
- Updated to NSIS 3.07.
- Some minor optimizations and code cleanup.
15.00 - 2021/06/23
- New INI setting DisableSleep=true option to avoid system going to sleep while optimizing (Lucy Phipps).
- Added italian localization. Thank you Giacomo Margarito.
- Added redirection to sourceforge page to get updates (Krzysztof Janda).
- Added -z switch to cwebp -activates lossless preset with given level (Paul).
- Added OGG (.ogm .spx .opus) to the OGG tool chain (necros) #93.
- Fixed OGG smart detection by content (necros) #93.
- Fixed cache not working (Jack).
- Reverted back cpdfsqueeze to cpdf as in 14.10 because cpdfsqueeze has not been updated since 2 years ago.
- Updated mp4v2 x86 and x64 to 5.0.0 Visual C++ 2019 custom builds.
- Updated SQLite to 3.36.0 x86 and x64 Visual C++ 2019 custom builds.
- Updated cpdf to 2.4.
- Updated ImageMagick to 7.1.0.1 with HDRI support.
- Updated libwebp to 1.2.0 x64.
- Updated to Minify 2.9.17 x64.
- Updated pingo to 0.99 rc5 (10) x64 version.
- Updated ffmpeg to 4.4 (Stephen D Brock).
- Updated ECT -> multithreaded processing support, folder support, Ofast #95 (Paul).
- Updated PngOptimizer x64 to 2.7 beta #95 (Paul).
- Updated Optipng x64 to 0.7.7 #95 (Paul).
- Updated pngwolf-zopfli x64 to 1.1.2 #95 (Paul).
- Updated pngquant to 2.15.0.
- Updated pingo to 0.99 rc5 (x64 version.
- Updated Leanify to 0.4.3.260.
- Upgraded distributions to 7-Zip 21.02.
- Some minor optimizations and code cleanup.
14.70 - 2021/04/13
- Fixed detecting file type by contents when it has no extension.
- Implemented new Leanify parallel mode to make optimization faster.
- Reenabled --mt-deflate ECT switch which was not available in FO 13.
- Updated SQLite to 3.35.4 x86 and x64 Visual C++ 2019 custom builds.
- Updated Ghostscript to 9.54.0.
- Updated mkclean to 0.9.0.
- Updated ImageMagick to 7.0.11.3 with HDRI support.
- Updated ffmpeg to 4.3.2.
- Updated Leanify to 0.4.3.258.
- Updated mozjpeg to 4.0.3 x86 and x64 binaries.
- Updated pingo to 0.99 rc4 (16) x64 version.
- Upgraded to C++ Builder 10.4.2 (27.0.40680.4203).
- Updated EXE compatibility to PatchPE 1.33.
- Some minor optimizations and code cleanup.
14.60 - 2021/02/09
- Improved speed and ratio with ECT by converting -9 to -90032 (Julien B. O.)
- Replaced JSMin by Minify #87 (Pingogeek) for x64 tool chain.
- Added Minify to the HTML, CSS, JS/JSON and XML tool chains when HTMLTidy, JSMin or Leanfy is enabled respectively.
- Updated SQLite to 3.34.1 x86 and x64 Visual C++ 2019 custom builds.
- Updated libwebp to 1.2.0 RC3 x64.
- Updated pingo to 0.99 rc4 (13) x64 version.
- Updated Leanify to 0.4.3.244.
- Updated ImageMagick to 7.0.10.58 with HDRI support.
- Updated libdeflate to 1.7.
- Updated to cppcheck 2.3.
- Upgraded distributions to 7-Zip 21.00.
14.50 - 2020/11/26
- Added support for pingo when copy metadata is enabled (Devedse).
- Added support for webp lossless with pingo.
- Updated jpeg-archive to 2.2.0.
- Updated pingo to 0.99 rc3 (23) x64 version.
- Updated ImageMagick to 7.0.10.37 with HDRI support.
- Updated Ghostscript to 9.53.3.
- Updated mozjpeg to 4.0.1 RC2 build 20200929 x86 and x64 binaries.
- Updated to mutool 1.18.
- Updated ffmpeg to 4.3.1.
- Updated to cppcheck 2.2.
- Some minor optimizations and code cleanup.
14.40 - 2020/09/05
- Added Tencent QQ (.gft .rdb) support using Leanify.
- Added OpenRaster (.ora) support using Leanify.
- Fixed grid drawing issues in C++ Builder 10.4.
- Updated SQLite to 3.33 x86 and x64 Visual C++ 2019 custom builds.
- Updated Leanify to 0.4.3.243 daily binaries and use new shorten parameters.
- Updated mozjpegtran to 4.0.1 build 20200815 x64 binaries.
- Updated pingo to 0.99 rc3 (15) x64 version.
- Updated to NSIS 3.06.1.
- Upgraded distributions to 7-Zip 20.02.
- Some minor optimizations and code cleanup.
- Updated to cppcheck 2.1.
- Upgraded to C++ Builder 10.4.1 (27.0.38860.1461).
14.30 - 2020/07/29
- Fixed status of files not being refreshed when using cache (JoeW).
- Updated german translation (thanks Renard Voß).
- Updated SQLite to 3.32.2 x86 and x64 Visual C++ 2019 custom builds.
- Updated ImageMagick to 7.0.10.24 with HDRI support.
- Updated ffmpeg to 4.3.
- Updated pingo to 0.99 rc3 (02) x64 version.
- Updated to mutool 1.17.
- Updated Ghostscript to 9.52.
- Updated to cppcheck 2.00.
- Upgraded to C++ Builder 10.4.0 (27.0.37889.9797).
14.20 - 2020/03/19
- Updated russian translation (thank you Max).
- Updated SQLite to 3.31.1 x86 and x64 Visual C++ 2019 custom builds.
- Swiched from cpdf to cpdfsqueeze which provides better results.
- Fixed Gifsicle 64 bit plugin in Plugins32 folder (AcidBurn).
- Updated ECT x64 binaries to 0.8.3.
- Updated pingo to 0.99 rc1 x64 version.
- Updated ffmpeg to 4.2.2.
- Updated ImageMagick to 7.0.9.20 with HDRI support.
- Updated JSMIn 2019-10-30 custom build.
- Updated Leanify to 0.4.3.240 daily binaries.
- Updated to jHead 3.04.
- Updated libwebp to 1.1.0 x64.
- Updated to NSIS 3.05.
- Updated UPX to 3.96.
14.10 - 2019/11/21
- Fixed regression wrong elapsed time calculation (LeTiger #67).
- Updated SQLite to 3.30.1 x86 and x64 Visual C++ 2019 custom builds.
- Updated ffmpeg to 4.2.1.
- Updated Ghostscript to 9.50.
- Updated ImageMagick to 7.0.9.5 with HDRI support.
- Updated pingo to 0.99 beta 63 x64 version.
- Updated Best CFBF Optimizer to Nov 1st 2019.
- Updated Leanify to 0.4.3.237 daily binaries.
14.00 - 2019/09/30
- Workarrounded TWebControl to minimize the memory leak happening in Internet Explorer when ads are enabled. As a side effect, ads should load faster too (Tomas Cold #66).
- Added Best CFBF Optimizer to the OLE toolchain.
- Updated cpdf to 2.3.
- Updated ffmpeg to 4.1.4.
- Updated ImageMagick to 7.0.8.58 with HDRI support.
- Updated libwebp to 1.0.3.
- Updated pingo to 0.99 beta 58 x64 version.
- Updated strip to 2.32.
- Updated to mutool 1.16.
- Upgraded distributions to 7-Zip 19.02.
- Some minor optimizations and code cleanup.
https://nikkhokkho.sourceforge.io/st...=FileOptimizer
15.80 - 2022/06/09
- Added support to JPEG XL (JXL) images using ImageMagick (A F).
- Added additional AVIF extensions: .heif .heifs .heic, .heics .avci .avcs .avif .avifs
- Made SQLite optimization error handling safer.
- Improved JPEG 2000 (JP2) handling.
- Fixed Korean translation (1042.po).
- Updated Chinese languages including Simplified Chinese (2052, zh_CN) and Traditional Chinese (1028, zh_TW) (thanks ???~?).
- Switched from HTML Tidy 5.6.0 x86 and HTML Tidy 5.8.0 x64 to HTML Tidy for Windows 5.9.17 x86 and x86.
- Updated ECT x64 binaries to 0.9.1 (Collpo).
- Updated to Minify 2.11.2 x64.
- Updated cpdf to 2.5.2.
- Updated pingo to 1.00 a17 x64 version.
- Updated to mutool 1.19.1.
- Updated AdvanceCOMP to 2.3.
- Updated SQLite to 3.38.4 x86 and x64 Visual C++ 2022 custom builds.
- Updated ImageMagick to 7.1.0.36 with HDRI support.
- Updated to cppcheck 2.8.
- Some minor optimizations and code cleanup.
https://sourceforge.net/projects/nik...er/15.80.2721/
nikkho (16th June 2022)
Feat.req. - Make option to pass custom flags to utilities, for example I want to pass number of my CPU threads to use for this or that tool.
nikkho (29th August 2022)
Thanks. It is already tracked here: https://sourceforge.net/p/nikkhokkho/tickets/122/
Suggested approaches are welcome.
By the way:
15.90 - 2022/07/12
- Made file operations stronger to avoid deleting source files when no write permissions.
- Improved lossless OGG optimization by adding OptiVorbis (TPS).
- Fixed stealing focus with /NOWINDOW (Louis Horvath).
- Added arithmetic support to jpegoptim.
- Updated jpegoptim to 1.4.7 x64 (WirzbergerW).
- Updated libwebp to 1.2.3 RC1 x64.
- Updated pingo to 1.00 a23 x64 version.
- Upgraded distributions to 7-Zip 22.00.
necros (29th August 2022)
Let's go for some accumulated updates at https://nikkhokkho.sourceforge.io/st...=FileOptimizer
16.10 - 2022/11/17
- New INI setting PersistentGrid=false option to make contents of the file grid persistant across sessions
- Implemented files in grid being persistent, and thus allowing to automatically save the session (Krzysztof Janda, Jacobov Landau -#115-).
- Added Ctrl-C, Ctrl-X and Ctrl-V to copy and cut grid files to clipboard.
- Disabled Help->Topics item if CHM file is not available.
- Changed default value for StartupDelay from 1000 to 3000ms in order to support additional processing.
- Fixed PNGQUANT executable being corrupted (trlkly #124).
- Added preliminary support for Windows Dark/Light mode (Mike Ando #123).
- Improved Webview cache by setting it to system temporary folder.
- Updated Leanify to 0.4.3.275.
- Updated SQLite to 3.40.0 x86 and x64 Visual C++ 2022 custom builds.
- Updated pingo to 1.00 a60 x64 version.
- Updated UPX to 4.01.
- Updated Ghostscript to 10.00.0.
- Updated ffmpeg to 5.1.2.
- Updated FLAC to 1.4.2.
- Updated ImageMagick to 7.1.0.52 with HDRI support.
- Updated to Minify 2.12.4 x64.
- Updated to mutool 1.21.
- Updated to OptiVorbis 0.1.2.
- Updated to guetzli-cuda-opencl 2.1.5.
- Some minor optimizations and code cleanup.
16.00 - 2022/09/09
- Made ads display smoother when using IE engine.
- Made ECT honor not recursing inside ZIP files (#71 necros).
- Fixed .GIF ImageMagick processing due to using -loop (#77 necros).
- Improved OptiVorbis optimization by adding --vendor_string_action empty --comment_fields_action delete (necros).
- Added --nofix to jpegoptim to make it safer (#119 LeTiger).
- Updated SQLite to 3.39.0 x86 and x64 Visual C++ 2022 custom builds.
- Updated ECT x64 binaries to 0.9.3 (#106).
- Updated libwebp to 1.2.4 x64.
- Updated strip to 2.36.1.
- Updated FLAC to 1.3.4.
- Updated ImageWorsener to 1.3.4.
- Updated to Minify 2.12 x64.
- Updated to mutool 1.20.
- Updated ImageMagick to 7.1.0.43 with HDRI support.
- Updated ffmpeg to 5.1.1.
- Updated pingo to 1.00 a31 x64 version.
- Some minor optimizations and code cleanup.
- Updated to cppcheck 2.9.
- Upgraded to C++ Builder 11.2.
just a useless FYI
I'm running some test on the compression tools of file optimizer
Mostly out of curiosity to learn the behavior of the tools but also to rule out anything that is worthless to use (just a waste of time) and to see if order of the tools matters
I'M dumping it slowly in another thread in batches of jpegs of a time
I'm currentkly gathering a 500gb + jpeg test library (all human potrait ish photos). so... a lot of testing to come
nikkho (16th December 2022)
Thanks for sharing your opinion.
Indeed the order matters. Thing here is that execution order will not get best results in all files. Anyway, looking forward to your results. It is a complex task, specially because you are only convering JPEG files, while FO supports several filetypes.
Though it would be easier to ask here than to check the programs process
Besides ect, pingo,leanify,mozjpegtran, what other tools does file optimizer used?
so far order of tools does not really seem to matter it looks liek there is no a lot of heritage and all tools does a full reconstruction of the file data. (unlike our many png tools). Except for pingo since it (according to fhanau) removes 18 bytes of the jpeg header, which can cause some compatabilities issues.
sdo it looks like pingo hasto be at the end for either
using - strip and getting the last 18 bytes out of there or
not using -strip but to still have meta data removed by prior tools
im still teating though. started on a 16gb 27.000 files data set but its taking a long time
Here they are: https://sourceforge.net/p/nikkhokkho...bug/Plugins64/
Your explanation makes sense, but in my tests execution order really produced different results, specially on PNG files.
+16.20 - 2023/01/10
- Properly fixed PNGQUANT executable being corrupted (trlkly #124).
- Switched back from Windows10 theme in light mode to regular Windows theme because the "enhanced" one is not adapting its colors (trlkly).
- Added multicore support to jpegoptim.
- Updated jpegoptim to 1.5.1 x64.
- Updated libwebp to 1.3.0 RC1 x64.
- Updated AdvanceCOMP to 2.4 (WinnieW).
- Updated pingo to 1.00 a66 x64 version.
- Updated ECT x64 binaries to 0.9.3 Fix.
- Better performance updating to ASMLib 2.52 with AVX512 support.
- Updated to C++ Builder 11.3 Malawi Beta.
- Some minor optimizations and code cleanup.
new version of pdfsizeopt: https://github.com/pts/pdfsizeopt/releases
You can use external optimizers (ECT, ...). For example with pingo (add pingo.exe to pdfsizeopt_win32exec dir): --use-image-optimizer="pingo -sa %(targetfnq)s"
nikkho (5th April 2023)
Hi @nikkho. Thanks for this convenient tool!
Are you still maintaining the software? I've found a few issues... should I report them on SourceForge?
Would you consider moving to GitHub one day? Thanks again.