- fix fill opacity in compose();
- workaround for broken PrintFlags.
- fix color overlay issue in compose().
- fix verbose arg for python 3.7 compatibility.
- fix has_pixel() for partial channels;
- support color overlay in compose().
- fix mask rendering in compose (Thanks @andrey-hider and @nkato).
- unicode bugfixes.
- fix descriptor decoding errors;
- minor bugfixes.
- fix UnicodeError in exif;
- workaround for irregular descriptor name;
- add undocumented extn tagged block decoding;
- move duplicated icc module to subpackage;
- support PIL rendering with extra alpha channels.
- update documentation;
- fix PEP8 compliance;
- rename merge_layers to compose.
- fix white background issue in as_PIL().
- add quality testing;
- fix disabled mask.
- fix has_mask() condition;
- add mask composition in merge_layers();
- fix mask display.
- fix infinity loop in print_tree().
- add vector origination API;
- fix shape and vector mask identification;
- change enum name conversion;
- update docs.
- add adjustments API;
- add mask API;
- bugfix for tagged_blocks decoders.
- add mask user API;
- add layer coordinate user API;
- add vector mask and vector stroke API;
- cleanup user API;
- add automatic descriptor conversion.
- cleanup user API organization;
- remove json encoder api;
- make cli a package main.
- workaround for anaconda 2.7 pillow;
- bbox existence checkf.
- experimental clipping support in merge_layer();
- revert as_PIL() in AdjustmentLayer.
- Small fix for erroneous unicode path name
- Add all_layers() method;
- Add _image_resource_blocks property;
- Add thumbnail() method.
- documentation updates;
- github repository renamed to psd-tools2;
- AdjustmentLayer fix.
- layer class structure reorganization;
- add Effects API;
- add TypeLayer API methods.
- PSDImage user API update;
- user API adds distinct layer types;
- Sphinx documentation.
- implemented many decodings of image resources and tagged blocks;
- implemented EngineData text information;
- user API for getting mask and patterns;
- user API to calculate bbox for shape layers;
- Fixed reading of layer mask data (thanks Evgeny Kopylov);
- Python 2.6 support is dropped;
- Python 3.6 support is added (thanks Leendert Brouwer);
- extension is rebuilt with Cython 0.25.2.
- fixed references decoding (thanks Josh Drake);
- fixed PIL support for CMYK files (thanks Michael Wu);
- optional C extension is rebuilt with Cython 0.23.4;
- Python 3.2 support is dropped; the package still works in Python 3.2, but the compatibility is no longer checked by tests, and so it can break in future.
- declare Python 3.5 as supported.
- implemented extraction of embedded files (embedded smart objects) - thanks Volker Braun;
- optional C extension is rebuilt with Cython 0.21.2.
- hg mirror on bitbucket is dropped, sorry!
- improved METADATA_SETTING decoding (thanks Evgeny Kopylov);
- layer comps decoding (thanks Evgeny Kopylov);
- improved smart objects decoding (thanks Joey Gentry);
- user API for getting layer transforms and placed layer size (thanks Joey Gentry);
- IPython import is deferred to speedup
psd-tools.py
command-line utility; _RootGroup.__repr__
is fixed;- warning message building is more robust;
- optional C extension is rebuilt with Cython 0.21.1.
- Fixed reading of images with layer masks (thanks Evgeny Kopylov);
- improved mask data decoding (thanks Evgeny Kopylov);
- fixed syncronization in case of
8B64
signatures (thanks Evgeny Kopylov); - fixed reading of layers with zero length (thanks Evgeny Kopylov);
- fixed Descriptor parsing (thanks Evgeny Kopylov);
- some of the descriptor structures and tagged block constants are renamed (thanks Evgeny Kopylov);
- PATH_SELECTION_STATE decoding (thanks Evgeny Kopylov);
- the library is switched to setuptools; docopt is now installed automatically.
- Layer effects parsing (thanks Evgeny Kopylov);
- trailing null bytes are stripped from descriptor strings (thanks Evgeny Kopylov);
- "Reference" and "List" descriptor parsing is fixed (thanks Evgeny Kopylov);
- scalar descriptor values (doubles, floats, booleans) are now returned as scalars, not as lists of size 1 (thanks Evgeny Kopylov);
- fixed reading of EngineData past declared length (thanks Carlton P. Taylor);
- "background color" Image Resource parsing (thanks Evgeny Kopylov);
- psd_tools.decoder.actions.Enum.enum field is renamed to psd_tools.decoder.actions.Enum.value (thanks Evgeny Kopylov);
- code simplification - constants are now bytestrings as they should be (thanks Evgeny Kopylov);
- Python 3.4 is supported.
- Improved merging of transparent layers (thanks Vladimir Timofeev);
- fixed layer merging and bounding box calculations for empty layers (thanks Vladimir Timofeev);
- C extension is rebuilt with Cython 0.20.1.
- psd-tools.py command-line interface is changed, 'debug' command is added;
- pretty-printing of internal structures;
- pymaging support is fixed;
- allow 'MeSa' to be a signature for image resource blocks (thanks Alexey Buzanov);
- psd_tools.debug.debug_view utility function is fixed;
- Photoshop CC constants are added;
- Photoshop CC vector origination data is decoded;
- binary data is preserved if descriptor parsing fails;
- more verbose logging for PSD reader;
- channel data reader became more robust - now it doesn't read past declared channel length;
- psd-tools.py --version command is fixed;
- lsdk tagged blocks parsing: this fixes some issues with layer grouping (thanks Ivan Maradzhyiski for the bug report and the patch);
- CMYK images support is added (thanks Alexey Buzanov, Guillermo Rauch and https://github.com/a-e-m for the help);
- Grayscale images support is added (thanks https://github.com/a-e-m);
- LittleCMS is now optional (but it is still required to get proper colors).
- Point and Millimeter types are added to UnitFloatType (thanks Doug Ellwanger).
- Some issues with descriptor parsing are fixed (thanks Luke Petre).
- Python 2.x: reading data from file-like objects is fixed (thanks Pavel Zinovkin).
- Fixed parsing of layer groups without explicit OPEN_FOLDER mark;
- Cython extension is rebuilt with Cython 0.18.
- Descriptor parsing (thanks Oliver Zheng);
- text (as string) is extracted from text layers (thanks Oliver Zheng);
- improved support for optional building of Cython extension.
- Typo is fixed:
LayerRecord.cilpping
should beLayerRecord.clipping
. Thanks Oliver Zheng.
- Highly experimental: basic layer merging is implemented (e.g. it is now possible to export layer group to a PIL image);
Layer.visible
no longer takes group visibility in account;Layer.visible_global
is the oldLayer.visible
;psd_tools.user_api.combined_bbox
made public;Layer.width
andLayer.height
are removed (uselayer.bbox.width
andlayer.bbox.height
instead);pil_support.composite_image_to_PIL
is renamed topil_support.extract_composite_image
andpil_support.layer_to_PIL
is renamed topil_support.extract_layer_image
in order to have the same API forpil_support
andpymaging_support
.
psd.composite_image()
is renamed topsd.as_PIL()
;- Pymaging support:
psd.as_pymaging()
andlayer.as_pymaging()
methods.
- Support for zip and zip-with-prediction compression methods is added;
- support for 16/32bit layers is added;
- optional Cython extension for faster zip-with-prediction decompression;
- other speed improvements.
- Initial support for 16bit and 32bit PSD files:
psd-tools
v0.2 can read composite (merged) images for such files and extract information (names, dimensions, hierarchy, etc.) about layers and groups of 16/32bit PSD; extracting image data for distinct layers in 16/32bit PSD files is not suported yet; - better
Layer.__repr__
; bbox
property forGroup
.
Packaging is fixed in this release.
- Better support for 32bit images (still incomplete);
- reader is able to handle "global" tagged layer info blocks that was previously discarded.
- warn about 32bit images;
- transparency support for composite images.
Initial release (v0.1 had packaging issues).