- Pillow 11 support.
- Better jpeg xmp preservation.
- Fix crash on reporting some errors.
- README Redhat installation and spelling fixes by @bpepple
- Fix windows mmap crash. Thanks @Fletcher.
- Reduce overzealous png optimization. Provide an option to do that.
- Alert!
- Timestamps options changed, invalidating old timestamps. On your first run
in a path with picopt 4.0 use the
-N
option to ignoring the old timestamp.
- Timestamps options changed, invalidating old timestamps. On your first run
in a path with picopt 4.0 use the
- Features
- Support optimizing SVG with svgo.
- Support converting more lossless formats to PNG & WEBP: CUR, DIB, FITS, IMT, PCX, PIXAR, PSD, QOI, SGI, SPIDER, SUN, TGA, XBM, XPM.
- Support converting animated formats to animated PNG.
- Support converting losslessly converting MPO to JPEG (choose primary image)
- Internal oxipng replaces external optipng for png compression.
- Better support for preserving EXIF, ICC_PROFILE, & XMP data across optimization and conversion.
--destroy-metadata
option becomes--strip-metadata
--near-lossless
option for lossless WebP.--preserve
file attributes after optimization.--disable-programs
option.- ~25% faster due to avoiding disk io.
- Fixes
- wal file would write illegal key names and fail to load for some files.
- Dev
- walk.run now returns totals instead of running report on them.
- Fix
- Remove Lossy WebP optimization. Wasn't optimal.
- Fix non zero exit code on success.
- Features
- Improve WebP optimization.
- If unrar is not available do not convert rar. Was making empty zips.
- Support zip deflate64
- Wasn't skipping directories appropriately.
- Keep original path suffix if not converting.
- Update treestamps fixes bugs.
- Upstream treestamps returns to relative stamp paths for portability.
- Upstream treestamps fixes crashes and check_config option.
- Update deps including treestamps.
- New option to disable treestamps check of config section for a run.
- Fix cleanup of temp dir when repacking a container or animated images fails.
- Simple error message instead of stack trace on config failure.
- Fix occasionally removing both final and originals on case insensitive filesystem.
- Fix error reporting
- Fix WebP Lossless detection
- Color help. Change bigger color to blue.
- Remove more debug print statements.
- Remove debug print statements.
- Animated PNG conversion to WEBP support
- Fixed showing total saved at the end
- Highlight conversions with color output
- Lowlight nothing saved results with dark colors
- Suppress stdout from programs
- Report errors in more detail
- Fixed verbosity count for cli
- Report on unhandled formats at verbosity > 1.
- Remove extraneous debug print statement.
- Fix not deleting working files
- Add progress dots to verbose level 1
- Fix treestamps factory breaking.
- Fix not skipping older than timestamp files.
- Add verbose logging skip files reason.
- Change walk algorithm to complete directories and containers before opening new ones.
- Case insensitive format config.
- Ignore symlinks when asked to in timestamps.
- Timestamps respect ignore option.
- Don't record timestamps for items inside containers.
- Traverse directories alphabetically.
- Fix timestamps not recording sometimes.
- Don't dump full timestamps after every dir completes.
- Trap container repack errors.
- Update treestamps to accept string paths.
- Formats
- WebP lossless, lossy and animated support.
- Gain support for .zip archives
- EPub support. ePub contents are never converted.
- TIFF support
- Timestamps
- Timestamps are now kept in .picopt_treestamps.yaml files.
- Picopt will convert and clean up old style timestamps.
- Timestamps are now recorded after optimizing every image for each image individually instead of directories, preserving progress.
- Timestamps record configuration. Running with a new config invalidates non-matching timestamps.
- Configuration
- .picoptrc.yaml files can configure options
- Changed cli option names.
- Removed cli args for manually disabling programs
- Faster checking for external programs
- Fall back to Pillow optimization if better external programs not found.
- Colored terminal output.
- Fixes
- Cleans up old temporary files from aborted picopt runs.
- Fix condition where new files in an old archive were not processed.
- optiping optimization level changed to o5
- Exif & icc metadata preserved in all formats much better by default.
- Support python v3.9
- Preserve comments when optimizing comic archives
- Walk in alphabetical order
- Check code with vulture and radon
- Remove adv support.
- Remove jpegrescan support. Inferior to mozjpeg
- Don't preserve ctime/mtime when making new pngs
- Use pytest instead of nosetest
- Require formatting with black & isort
- Pillow 7 compatibility
- Stop supporting python 2
- Switch to poetry build system
- Type checking with mypy
- Don't use pngout on 16 bit pngs because it crashes
- Fix broken option -D --optimize_after
- Fix illegal stack trace call.
- Fix exception handling when extern process returns non-zero
- Report on all errors at the end
- Remove PIL support in favor of Pillow.
- Python3 proof
- Fix hang on external program error. Likely with 16 bit PNGs and pngout.
- More compatibility with Python 3
- Fix formats as a list when it should be a set issue
- Drop TIFF support.
- Fix space savings reporting bug where savings always equaled zero
- When setting new timestamps, don't remove timestamps above the root paths specified as input
- Use timestamp caching more often
- Fix bug where files were not detected
- Fix broken timestamp processing.
- fix main entry bug for cli
- let the archive date override the newness of its contained files.
- let the cli run programmatically with passed in args
- code no longer relies on cwd for finding its way
- -d --directory argument goes away
- nosetests now run the old inadequate cli tests
- big code cleanup
- don't redetect new image format type
- Print found picopt timestamps
- Lots of linting
- Fix jpeg_multithread flag
- moved tests out of picopt module
- Keep version in one place in picopt/init.py
- Remove dev dependencies from installed requirements.
- break up monolithic picopt into modules. No functional change.
- picopt learned the -j option for specifying number of subprocesses (thanks @DarwinAwardWinner)
- fixed rare crash on sequential gif detection
- detect PNM images properly for conversion with optipng
- fix verifying gif crash (thanks @DarwinAwardWinner)
- mozjpeg support (thanks to @crass00)
- Fix disabled comic archive switch.
- Fix timestamp writing to happen once workers have finished
- Fix size saved if size in is zero
- Fix -v to actually be more verbose than default
- Fix from Dennis Schwertel to jpegtran runner
- Fix -Y to actually disable not enable type conversion
- Fix typos in --help
- Packaging for PyPI
- Internal changes to make picopt more modular and library friendly
- CHANGED COMMAND LINE ARGUMENT LETTERS.
- Added verbosity setting
- Truncated relative and in-archive path names for readibiliy
- Nag about animated gifs less
- Fix error on no directories
- Added multithreaded jpegrescan operation when picopt isn't using up all the cores at the suggestion of Alex Roe.
- Added destroy metadata option at the suggestion of Alex Roe.
- Added to ArchLinux by Alex Roe.