Provided by: python3-psd-tools_1.10.7+dfsg.1-1_amd64 

NAME
src - src Documentation psd-tools is a Python package for working with Adobe Photoshop PSD files as described in specification.
INSTALLATION
Use pip to install the package: pip install psd-tools NOTE: In order to extract images from 32bit PSD files PIL/Pillow must be built with LITTLECMS or LITTLECMS2 support (apt-get install liblcms2-2 or brew install little-cms2)
GETTING STARTED
from psd_tools import PSDImage psd = PSDImage.open('example.psd') psd.composite().save('example.png') for layer in psd: print(layer) image = layer.composite() Check out the Usage documentation for more examples. Usage Command line The package provides command line tools to handle a PSD document: psd-tools export <input_file> <output_file> [options] psd-tools show <input_file> [options] psd-tools debug <input_file> [options] psd-tools -h | --help psd-tools --version Example: psd-tools show example.psd # Show the file content psd-tools export example.psd example.png # Export as PNG psd-tools export example.psd[0] example-0.png # Export layer as PNG Working with PSD document psd_tools.api package provides the user-friendly API to work with PSD files. PSDImage represents a PSD file. Open an image: from psd_tools import PSDImage psd = PSDImage.open('my_image.psd') Most of the data structure in the psd-tools suppports pretty printing in IPython environment. In [1]: PSDImage.open('example.psd') Out[1]: PSDImage(mode=RGB size=101x55 depth=8 channels=3) [0] PixelLayer('Background' size=101x55) [1] PixelLayer('Layer 1' size=85x46) Internal layers are accessible by iterator or indexing: for layer in psd: print(layer) if layer.is_group(): for child in layer: print(child) child = psd[0][0] NOTE: The iteration order is from background to foreground, which is reversed from version prior to 1.7.x. Use reversed(list(psd)) to iterate from foreground to background. The opened PSD file can be saved: psd.save('output.psd') If the PSD File's layer structure was updated, saving it will update the ImagaData section to produce an accurate thumbnail. Working with Layers There are various layer kinds in Photoshop. The most basic layer type is PixelLayer: print(layer.name) layer.kind == 'pixel' Some of the layer attributes are editable, such as a layer name: layer.name = 'Updated layer 1' It is possible to create a new PixelLayer from a PIL object, the PIL image will be converted to the color mode of the PSD File given in parameter: PixelLayer.frompil(pil_image, psd_file, "Layer name", top_offset, left_offset, Compression.RLE) See the function documentation for further parameter explanations. Group has internal layers: for layer in group: print(layer) first_layer = group[0] Create a new group object.: Group.new("Group name", open_folder=True, parent=parent_group) TypeLayer is a layer with texts: print(layer.text) ShapeLayer draws a vector shape, and the shape information is stored in vector_mask and origination property. Other layers can also have shape information as a mask: print(layer.vector_mask) for shape in layer.origination: print(shape) SmartObjectLayer embeds or links an external file for non-destructive editing. The file content is accessible via smart_object property: import io if layer.smart_object.filetype in ('jpg', 'png'): image = Image.open(io.BytesIO(layer.smart_object.data)) SolidColorFill, PatternFill, and GradientFill are fill layers that paint the entire region if there is no associated mask. Sub-classes of AdjustmentLayer represents layer adjustment applied to the composed image. See Adjustment layers. Modifying the layer structure The layer structure of a PSD object can be modified through methods emulating a python list. The internal model of the psd layer structure will be automatically updated when saving the psd to a file or a similar operation. Moving a layer from a PSD to another will also automatically convert the PixelLayer to the target psd's color mode. The follwing are valid for both PSDImage and Group objects. Set an item: group[0] = layer Add a layer to a group: group.append(layer) Add a list of layers to a group: group.extend(layers) Insert a layer to a specific index in the group: group.insert(3, layer) Remove a layer from the a group: group.remove(layer) Pop a layer from the group: layer = group.pop() Emptying a layer group: group.clear() Get the index of a layer in the group: group.index(layer) Count the occurences of a layer in a group: group.count(layer) Move a given list of layers in a newly created Group. If no parent group is given in parameter, the new group will replace the first layer of the list in the PSD structure: Group.group_layers(layer_list, "Group Name", parent=parent_group, open_folder=True) Below an example of such an operation.: - PSDImage - Group 1 - PixelLayer - FillLayer - PixelLayer - TypeLayer - SmartObjectLayer - PixelLayer Group.group_layers(PSDImage[:2], "New Group") - PSDImage - New Group - Group 1 - PixelLayer - FillLayer - PixelLayer - TypeLayer - SmartObjectLayer - PixelLayer Some operations are available for all Layer objects. Delete a layer from its layer structure: layer.delete() Layers can be moved from a group to another: layer.move_to_group(target_group) Layers can be moved within the group to change their order: layer.move_up(5) # Will send the layer upward in the group layer.move_down(3) # Will send the layer downward in the group Exporting data to PIL Export the entire document as PIL.Image: image = psd.composite() image.save('exported.png') Export a single layer including masks and clipping layers: image = layer.composite() Export layer and mask separately without composition: image = layer.topil() mask = layer.mask.topil() To composite specific layers, such as layers except for texts, use layer_filter option: image = psd.composite( layer_filter=lambda layer: layer.is_visible() and layer.kind != 'type') Note that most of the layer effects and adjustment layers are not supported. The compositing result may look different from Photoshop. Exporting data to NumPy PSDImage or layers can be exported to NumPy array by numpy() method: image = psd.numpy() layer_image = layer.numpy() Migrating to 1.10 psd-tools 1.10 has a few breaking changes. Basic layer structure editing is supported in 1.10. You can add or remove a pixel layer, or change the grouping of layers. psd-tools 1.10 drops compose module. Use composite instead. version 1.10.x: image = psd.composite() layer_image = layer.composite() Migrating to 1.9 psd-tools 1.9 switches to NumPy based compositing. version 1.8.x: psd = PSDImage.open(filename) image = psd.compose() layer = psd[0] layer_image = layer.compose() version 1.9.x: psd = PSDImage.open(filename) image = psd.composite() layer = psd[0] layer_image = layer.composite() NumPy array API is introduced: image = psd.numpy() layer_image = layer.numpy() Migrating to 1.8 There are major API changes in version 1.8.x. NOTE: In version 1.8.0 - 1.8.7, the package name was psd_tools2. PSDImage File open method is changed from load to open(). version 1.7.x: psd = PSDImage.load(filename) with open(filename, 'rb') as f: psd = PSDImage.from_stream(f) version 1.8.x: psd = PSDImage.open(filename) with open(filename, 'rb') as f: psd = PSDImage.open(f) Layers Children of PSDImage or Group is directly accessible by iterator or indexing. version 1.7.x: for layer in group.layers: print(layer) first_child = group.layers[0] version 1.8.x: for layer in group: print(layer) first_child = group[0] In version 1.8.x, the order of layers is reversed to reflect that the index should not change when a new layer is added on top. PIL export Primary PIL export method is compose(). version 1.7.x: image = psd.as_PIL() layer_image = compose(layer) raw_layer_image = layer.as_PIL() version 1.8.x: image = psd.compose() layer_image = layer.compose() raw_layer_image = layer.topil() Low-level data structure Data structures are completely rewritten to support writing functionality. See psd_tools.psd subpackage. version 1.7.x: psd.decoded_data version 1.8.x: psd._record Drop pymaging support Pymaging support is dropped. Contributing Development happens at github: bug tracker. Feel free to submit bug reports or pull requests. Attaching an erroneous PSD file makes the debugging process faster. Such PSD file might be added to the test suite. The license is MIT. Package design The package consists of two major subpackages: 1. psd_tools.psd: subpackage that reads/writes low-level binary structure of the PSD/PSB file. The core data structures are built around attrs class that all implement read and write methods. Each data object tries to resemble the structure described in the specification. Although documented, the specification is far from complete and some are even inaccurate. When psd-tools finds unknown data structure, the package keeps such data as bytes in the parsed result. 2. psd_tools.api: User-facing API that implements various easy-to-use methods that manipulate low-level psd_tools.psd data structures. Testing In order to run tests, make sure PIL/Pillow is built with LittleCMS or LittleCMS2 support. For example, on Ubuntu, install the following packages: apt-get install liblcms2-dev libjpeg-dev libfreetype6-dev zlib1g-dev Then install psd-tools with the following command: pip install -e .[dev] Finally, run tests with pytest: pytest Documentation Install Sphinx to generate documents: pip install sphinx sphinx_rtd_theme Once installed, use Makefile: make docs Acknowledgments Great thanks to all the contributors.
FEATURES
Supported: • Read and write of the low-level PSD/PSB file structure • Raw layer image export in NumPy and PIL format Limited support: • Composition of basic pixel-based layers • Composition of fill layer effects • Vector masks • Editing of some layer attributes such as layer name • Blending modes except for dissolve • Drawing of bezier curves Not supported: • Editing of layer structure, such as adding or removing a layer • Composition of adjustment layers • Composition of many layer effects • Font rendering psd_tools See Usage for examples. PSDImage class psd_tools.PSDImage(data: PSD) Photoshop PSD/PSB file object. The low-level data structure is accessible at PSDImage._record. Example: from psd_tools import PSDImage psd = PSDImage.open('example.psd') image = psd.compose() for layer in psd: layer_image = layer.compose() append(layer: Layer) -> None Add a layer to the end (top) of the group Parameters layer -- The layer to add property bbox: tuple[int, int, int, int] Minimal bounding box that contains all the visible layers. Use viewbox to get viewport bounding box. When the psd is empty, bbox is equal to the canvas bounding box. Returns (left, top, right, bottom) tuple. property bottom: int Bottom coordinate. Returns int property channels: int Number of color channels. Returns int clear() -> None Clears the group. property color_mode: ColorMode Document color mode, such as 'RGB' or 'GRAYSCALE'. See ColorMode. Returns ColorMode property compatibility_mode: CompatibilityMode Set the compositing and layer organization compatibility mode. Writable. Returns CompatibilityMode composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] = 1.0, alpha: float = 0.0, layer_filter: Callable | None = None, ignore_preview: bool = False, apply_icc: bool = True) Composite the PSD image. Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the viewbox of the PSD. • ignore_preview -- Boolean flag to whether skip compositing when a pre-composited preview is available. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image. count(layer: Layer) -> int Counts the number of occurences of a layer in the group. Parameters layer property depth: int Pixel depth bits. Returns int descendants(include_clip: bool = True) -> Iterator[Layer] Return a generator to iterate over all descendant layers. Example: # Iterate over all layers for layer in psd.descendants(): print(layer) # Iterate over all layers in reverse order for layer in reversed(list(psd.descendants())): print(layer) Parameters include_clip -- include clipping layers. extend(layers: Iterable[Layer]) -> None Add a list of layers to the end (top) of the group Parameters layers -- The layers to add find(name: str) -> Layer | None Returns the first layer found for the given layer name Parameters name findall(name: str) -> Iterator[Layer] Return a generator to iterate over all layers with the given name. Parameters name classmethod frompil(image: Image, compression=Compression.RLE) -> Self Create a new PSD document from PIL Image. Parameters • image -- PIL Image object. • compression -- ImageData compression option. See Compression. Returns A PSDImage object. has_preview() -> bool Returns if the document has real merged data. When True, topil() returns pre-composed data. has_thumbnail() -> bool True if the PSDImage has a thumbnail resource. property height: int Document height. Returns int property image_resources: ImageResources Document image resources. ImageResources is a dict-like structure that keeps various document settings. See psd_tools.constants.Resource for available keys. Returns ImageResources Example: from psd_tools.constants import Resource version_info = psd.image_resources.get_data(Resource.VERSION_INFO) slices = psd.image_resources.get_data(Resource.SLICES) Image resources contain an ICC profile. The following shows how to export a PNG file with embedded ICC profile: from psd_tools.constants import Resource icc_profile = psd.image_resources.get_data(Resource.ICC_PROFILE) image = psd.compose(apply_icc=False) image.save('output.png', icc_profile=icc_profile) index(layer: Layer) -> int Returns the index of the specified layer in the group. Parameters layer insert(index: int, layer: Layer) -> None Insert the given layer at the specified index. Parameters • index • layer is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Returns visibility of the element. Returns bool property kind: str Kind. Returns 'psdimage' property left: int Left coordinate. Returns 0 property name: str Element name. Returns 'Root' classmethod new(mode: str, size: tuple[int, int], color: int = 0, depth: Literal[8, 16, 32] = 8, **kwargs: Any) Create a new PSD document. Parameters • mode -- The color mode to use for the new image. • size -- A tuple containing (width, height) in pixels. • color -- What color to use for the image. Default is black. Returns A PSDImage object. numpy(channel: Literal['color', 'shape', 'alpha', 'mask'] | None = None) -> ndarray Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray property offset: tuple[int, int] (left, top) tuple. Returns tuple classmethod open(fp: BinaryIO | str | bytes | PathLike, **kwargs: Any) -> Self Open a PSD document. Parameters • fp -- filename or file-like object. • encoding -- charset encoding of the pascal string within the file, default 'macroman'. Some psd files need explicit encoding option. Returns A PSDImage object. property parent: None Parent of this layer. pop(index: int = -1) -> Layer Removes the specified layer from the list and returns it. Parameters index remove(layer: Layer) -> Self Removes the specified layer from the group Parameters layer property right: int Right coordinate. Returns int save(fp: BinaryIO | str | bytes | PathLike, mode: str = 'wb', **kwargs: Any) -> None Save the PSD file. Updates the ImageData section if the layer structure has been updated. Parameters • fp -- filename or file-like object. • encoding -- charset encoding of the pascal string within the file, default 'macroman'. • mode -- file open mode, default 'wb'. property size: tuple[int, int] (width, height) tuple. Returns tuple property tagged_blocks: TaggedBlocks | None Document tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks or None. Example: from psd_tools.constants import Tag patterns = psd.tagged_blocks.get_data(Tag.PATTERNS1) thumbnail() -> Image | None Returns a thumbnail image in PIL.Image. When the file does not contain an embedded thumbnail image, returns None. property top: int Top coordinate. Returns 0 topil(channel: int | ChannelID | None = None, apply_icc: bool = True) -> Image | None Get PIL Image. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the composed image is not available. property version: int Document version. PSD file is 1, and PSB file is 2. Returns int property viewbox: tuple[int, int, int, int] Return bounding box of the viewport. Returns (left, top, right, bottom) tuple. property visible: bool Visibility. Returns True property width: int Document width. Returns int psd_tools.api.adjustments Adjustment and fill layers. Example: if layer.kind == 'brightnesscontrast': print(layer.brightness) if layer.kind == 'gradientfill': print(layer.gradient_kind) Fill layers Fill layers are similar to ShapeLayer except that the layer might not have an associated vector mask. The layer therefore expands the entire canvas of the PSD document. Fill layers all inherit from FillLayer. Example: if isinstance(layer, psd_tools.layers.FillLayer): image = layer.compose() SolidColorFill class psd_tools.api.adjustments.SolidColorFill(*args: Any) Solid color fill. property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. property data: DescriptorBlock Color in Descriptor(RGB). delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int PatternFill class psd_tools.api.adjustments.PatternFill(*args: Any) Pattern fill. property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. property data: DescriptorBlock Pattern in Descriptor(PATTERN). delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int GradientFill class psd_tools.api.adjustments.GradientFill(*args: Any) Gradient fill. property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. property data: DescriptorBlock Gradient in Descriptor(GRADIENT). delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects property gradient_kind: str Kind of the gradient, one of the following: • Linear • Radial • Angle • Reflected • Diamond has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int Adjustment layers Adjustment layers apply image filtering to the composed result. All adjustment layers inherit from AdjustmentLayer. Adjustment layers do not have pixels, and currently ignored in compose. Attempts to call topil on adjustment layers always return None. Just as any other layer, adjustment layers might have an associated mask or vector mask. Adjustment can appear in other layers' clipping layers. Example: if isinstance(layer, psd_tools.layers.AdjustmentLayer): print(layer.kind) BrightnessContrast class psd_tools.api.adjustments.BrightnessContrast(*args: Any) Brightness and contrast adjustment. property automatic: bool property brightness: int property contrast: int property lab: bool property mean: int property use_legacy: bool property vrsn: int Curves class psd_tools.api.adjustments.Curves(*args: Any) Curves adjustment. property data: Curves Raw data. Returns Curves property extra Exposure class psd_tools.api.adjustments.Exposure(*args: Any) Exposure adjustment. property exposure: float Exposure. Returns float property gamma: float Gamma. Returns float property offset: float Offset. Returns float Levels class psd_tools.api.adjustments.Levels(*args: Any) Levels adjustment. Levels contain a list of LevelRecord. property data: Levels List of level records. The first record is the master. Returns Levels. property master: LevelRecord Master record. Vibrance class psd_tools.api.adjustments.Vibrance(*args: Any) Vibrance adjustment. property saturation: int Saturation. Returns int property vibrance: int Vibrance. Returns int HueSaturation class psd_tools.api.adjustments.HueSaturation(*args: Any) Hue/Saturation adjustment. HueSaturation contains a list of data. property colorization: tuple Colorization. Returns tuple property data: list List of Hue/Saturation records. Returns list property enable_colorization: int Enable colorization. Returns int property master: tuple Master record. Returns tuple ColorBalance class psd_tools.api.adjustments.ColorBalance(*args: Any) Color balance adjustment. property highlights: tuple Highlights. Returns tuple property luminosity: int Luminosity. Returns int property midtones: tuple Mid-tones. Returns tuple property shadows: tuple Shadows. Returns tuple BlackAndWhite class psd_tools.api.adjustments.BlackAndWhite(*args: Any) Black and white adjustment. property blue: int property cyan: int property green: int property magenta: int property preset_file_name: str property preset_kind: int property red: int property tint_color property use_tint: bool property yellow: int PhotoFilter class psd_tools.api.adjustments.PhotoFilter(*args: Any) Photo filter adjustment. property color_components property color_space property density property luminosity property xyz: bool xyz. Returns bool ChannelMixer class psd_tools.api.adjustments.ChannelMixer(*args: Any) Channel mixer adjustment. property data property monochrome ColorLookup class psd_tools.api.adjustments.ColorLookup(*args: Any) Color lookup adjustment. Posterize class psd_tools.api.adjustments.Posterize(*args: Any) Posterize adjustment. property posterize: int Posterize value. Returns int Threshold class psd_tools.api.adjustments.Threshold(*args: Any) Threshold adjustment. property threshold: int Threshold value. Returns int SelectiveColor class psd_tools.api.adjustments.SelectiveColor(*args: Any) Selective color adjustment. property data property method GradientMap class psd_tools.api.adjustments.GradientMap(*args: Any) Gradient map adjustment. property color_model property color_stops property dithered property expansion property gradient_name property interpolation: float Interpolation between 0.0 and 1.0. property length property max_color property min_color property mode property random_seed property reversed property roughness property show_transparency property transparency_stops property use_vector_color psd_tools.api.effects Effects module. class psd_tools.api.effects.Effects(layer: Any) List-like effects. property enabled: bool Whether if all the effects are enabled. Return type bool find(name: str) -> Iterator[_Effect] Iterate effect items by name. property scale Scale value. DropShadow class psd_tools.api.effects.DropShadow(value: Descriptor, image_resources: ImageResources) property angle Angle value. property anti_aliased: bool Angi-aliased. property blend_mode Effect blending mode. property choke Choke level. property color Color. property contour Contour configuration. property distance Distance. property enabled: bool Whether if the effect is enabled. property layer_knocks_out: bool Layers are knocking out. property noise Noise level. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property shown: bool Whether if the effect is shown in dialog. property size Size in pixels. property use_global_light: bool Using global light. InnerShadow class psd_tools.api.effects.InnerShadow(value: Descriptor, image_resources: ImageResources) property angle Angle value. property anti_aliased: bool Angi-aliased. property blend_mode Effect blending mode. property choke Choke level. property color Color. property contour Contour configuration. property distance Distance. property enabled: bool Whether if the effect is enabled. property noise Noise level. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property shown: bool Whether if the effect is shown in dialog. property size Size in pixels. property use_global_light: bool Using global light. OuterGlow class psd_tools.api.effects.OuterGlow(value: Descriptor, image_resources: ImageResources) property angle Angle value. property anti_aliased: bool Angi-aliased. property blend_mode Effect blending mode. property choke Choke level. property color Color. property contour Contour configuration. property dithered Dither flag. property enabled: bool Whether if the effect is enabled. property glow_type Glow type. property gradient Gradient configuration. property noise Noise level. property offset Offset value. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property quality_jitter Quality jitter property quality_range Quality range. property reversed Reverse flag. property shown: bool Whether if the effect is shown in dialog. property size Size in pixels. property type Gradient type, one of linear, radial, angle, reflected, or diamond. InnerGlow class psd_tools.api.effects.InnerGlow(value: Descriptor, image_resources: ImageResources) property angle Angle value. property anti_aliased: bool Angi-aliased. property blend_mode Effect blending mode. property choke Choke level. property color Color. property contour Contour configuration. property dithered Dither flag. property enabled: bool Whether if the effect is enabled. property glow_source Elements source. property glow_type Glow type. property gradient Gradient configuration. property noise Noise level. property offset Offset value. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property quality_jitter Quality jitter property quality_range Quality range. property reversed Reverse flag. property shown: bool Whether if the effect is shown in dialog. property size Size in pixels. property type Gradient type, one of linear, radial, angle, reflected, or diamond. ColorOverlay class psd_tools.api.effects.ColorOverlay(value: Descriptor, image_resources: ImageResources) property blend_mode Effect blending mode. property color Color. property enabled: bool Whether if the effect is enabled. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property shown: bool Whether if the effect is shown in dialog. GradientOverlay class psd_tools.api.effects.GradientOverlay(value: Descriptor, image_resources: ImageResources) property aligned: bool Aligned. property angle Angle value. property blend_mode Effect blending mode. property dithered Dither flag. property enabled: bool Whether if the effect is enabled. property gradient Gradient configuration. property offset Offset value. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property reversed Reverse flag. property scale Scale value. property shown: bool Whether if the effect is shown in dialog. property type Gradient type, one of linear, radial, angle, reflected, or diamond. PatternOverlay class psd_tools.api.effects.PatternOverlay(value: Descriptor, image_resources: ImageResources) property aligned: bool Aligned. property angle Angle value. property blend_mode Effect blending mode. property enabled: bool Whether if the effect is enabled. property linked Linked. property opacity: float Layer effect opacity in percentage. property pattern Pattern config. property phase Phase value in Point. property present: bool Whether if the effect is present in Photoshop UI. property scale Scale value. property shown: bool Whether if the effect is shown in dialog. Stroke class psd_tools.api.effects.Stroke(value: Descriptor, image_resources: ImageResources) property angle Angle value. property blend_mode Effect blending mode. property color Color. property dithered Dither flag. property enabled: bool Whether if the effect is enabled. property fill_type Fill type, SolidColor, Gradient, or Pattern. property gradient Gradient configuration. property linked Linked. property offset Offset value. property opacity: float Layer effect opacity in percentage. property overprint Overprint flag. property pattern Pattern config. property phase Phase value in Point. property position Position of the stroke, InsetFrame, OutsetFrame, or CenteredFrame. property present: bool Whether if the effect is present in Photoshop UI. property reversed Reverse flag. property shown: bool Whether if the effect is shown in dialog. property size Size value. property type Gradient type, one of linear, radial, angle, reflected, or diamond. BevelEmboss class psd_tools.api.effects.BevelEmboss(value: Descriptor, image_resources: ImageResources) property altitude Altitude value. property angle Angle value. property anti_aliased: bool Anti-aliased. property bevel_style Bevel style, one of OuterBevel, InnerBevel, Emboss, PillowEmboss, or StrokeEmboss. property bevel_type Bevel type, one of SoftMatte, HardLight, SoftLight. property contour Contour configuration. property depth Depth value. property direction Direction, either StampIn or StampOut. property enabled: bool Whether if the effect is enabled. property highlight_color Highlight color value. property highlight_mode Highlight blending mode. property highlight_opacity Highlight opacity value. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property shadow_color Shadow color value. property shadow_mode Shadow blending mode. property shadow_opacity Shadow opacity value. property shown: bool Whether if the effect is shown in dialog. property size Size value in pixel. property soften Soften value. property use_global_light: bool Using global light. property use_shape: bool Using shape. property use_texture: bool Using texture. Satin class psd_tools.api.effects.Satin(value: Descriptor, image_resources: ImageResources) Satin effect property angle Angle value. property anti_aliased: bool Anti-aliased. property blend_mode Effect blending mode. property color Color. property contour Contour configuration. property distance Distance value. property enabled: bool Whether if the effect is enabled. property inverted: bool Inverted. property opacity: float Layer effect opacity in percentage. property present: bool Whether if the effect is present in Photoshop UI. property shown: bool Whether if the effect is shown in dialog. property size Size value in pixel. psd_tools.api.layers Layer module. Artboard class psd_tools.api.layers.Artboard(psd: Any, record: LayerRecord, channels: ChannelDataList, parent: TGroupMixin | None) Artboard is a special kind of group that has a pre-defined viewbox. append(layer: Layer) -> None Add a layer to the end (top) of the group Parameters layer -- The layer to add property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int clear() -> None Clears the group. property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image. count(layer: Layer) -> int Counts the number of occurences of a layer in the group. Parameters layer delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). descendants(include_clip: bool = True) -> Iterator[Layer] Return a generator to iterate over all descendant layers. Example: # Iterate over all layers for layer in psd.descendants(): print(layer) # Iterate over all layers in reverse order for layer in reversed(list(psd.descendants())): print(layer) Parameters include_clip -- include clipping layers. property effects: Effects Layer effects. Returns Effects extend(layers: Iterable[Layer]) -> None Add a list of layers to the end (top) of the group Parameters layers -- The layers to add static extract_bbox(layers, include_invisible: bool = False) -> tuple[int, int, int, int] Returns a bounding box for layers or (0, 0, 0, 0) if the layers have no bounding box. Parameters include_invisible -- include invisible layers in calculation. Returns tuple of four int find(name: str) -> Layer | None Returns the first layer found for the given layer name Parameters name findall(name: str) -> Iterator[Layer] Return a generator to iterate over all layers with the given name. Parameters name classmethod group_layers(layers: list[Layer], name: str = 'Group', parent: GroupMixin | None = None, open_folder: bool = True) Create a new Group object containing the given layers and moved into the parent folder. If no parent is provided, the group will be put in place of the first layer in the given list. Example below: Parameters • layers -- The layers to group. Can by any subclass of Layer • name -- The display name of the group. Default to "Group". • parent -- The parent group to add the newly created Group object into. • open_folder -- Boolean defining whether the folder will be open or closed in photoshop. Default to True. Returns A Group has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int index(layer: Layer) -> int Returns the index of the specified layer in the group. Parameters layer insert(index: int, layer: Layer) -> None Insert the given layer at the specified index. Parameters • index • layer is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str classmethod new(name: str = 'Group', open_folder: bool = True, parent: GroupMixin | None = None) -> Self Create a new Group object with minimal records and data channels and metadata to properly include the group in the PSD file. Parameters • name -- The display name of the group. Default to "Group". • open_folder -- Boolean defining whether the folder will be open or closed in photoshop. Default to True. • parent -- Optional parent folder to move the newly created group into. Returns A Group object numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. pop(index: int = -1) -> Layer Removes the specified layer from the list and returns it. Parameters index remove(layer: Layer) -> Self Removes the specified layer from the group Parameters layer property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int Group class psd_tools.api.layers.Group(psd: Any, record: LayerRecord, channels: ChannelDataList, parent: TGroupMixin | None) Group of layers. Example: group = psd[1] for layer in group: if layer.kind == 'pixel': print(layer.name) append(layer: Layer) -> None Add a layer to the end (top) of the group Parameters layer -- The layer to add property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int clear() -> None Clears the group. property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image. count(layer: Layer) -> int Counts the number of occurences of a layer in the group. Parameters layer delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). descendants(include_clip: bool = True) -> Iterator[Layer] Return a generator to iterate over all descendant layers. Example: # Iterate over all layers for layer in psd.descendants(): print(layer) # Iterate over all layers in reverse order for layer in reversed(list(psd.descendants())): print(layer) Parameters include_clip -- include clipping layers. property effects: Effects Layer effects. Returns Effects extend(layers: Iterable[Layer]) -> None Add a list of layers to the end (top) of the group Parameters layers -- The layers to add static extract_bbox(layers, include_invisible: bool = False) -> tuple[int, int, int, int] Returns a bounding box for layers or (0, 0, 0, 0) if the layers have no bounding box. Parameters include_invisible -- include invisible layers in calculation. Returns tuple of four int find(name: str) -> Layer | None Returns the first layer found for the given layer name Parameters name findall(name: str) -> Iterator[Layer] Return a generator to iterate over all layers with the given name. Parameters name classmethod group_layers(layers: list[Layer], name: str = 'Group', parent: GroupMixin | None = None, open_folder: bool = True) Create a new Group object containing the given layers and moved into the parent folder. If no parent is provided, the group will be put in place of the first layer in the given list. Example below: Parameters • layers -- The layers to group. Can by any subclass of Layer • name -- The display name of the group. Default to "Group". • parent -- The parent group to add the newly created Group object into. • open_folder -- Boolean defining whether the folder will be open or closed in photoshop. Default to True. Returns A Group has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int index(layer: Layer) -> int Returns the index of the specified layer in the group. Parameters layer insert(index: int, layer: Layer) -> None Insert the given layer at the specified index. Parameters • index • layer is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str classmethod new(name: str = 'Group', open_folder: bool = True, parent: GroupMixin | None = None) -> Self Create a new Group object with minimal records and data channels and metadata to properly include the group in the PSD file. Parameters • name -- The display name of the group. Default to "Group". • open_folder -- Boolean defining whether the folder will be open or closed in photoshop. Default to True. • parent -- Optional parent folder to move the newly created group into. Returns A Group object numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. pop(index: int = -1) -> Layer Removes the specified layer from the list and returns it. Parameters index remove(layer: Layer) -> Self Removes the specified layer from the group Parameters layer property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int PixelLayer class psd_tools.api.layers.PixelLayer(psd: Any, record: LayerRecord, channels: ChannelDataList, parent: TGroupMixin | None) Layer that has rasterized image in pixels. Example: assert layer.kind == 'pixel': image = layer.composite() image.save('layer.png') property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects classmethod frompil(pil_im: Image, psd_file: Any | None = None, layer_name: str = 'Layer', top: int = 0, left: int = 0, compression: Compression = Compression.RLE, **kwargs: Any) -> PixelLayer Creates a PixelLayer from a PIL image for a given psd file. Parameters • pil_im -- The Image object to convert to photoshop • psdfile -- The psd file the image will be converted for. • layer_name -- The name of the layer. Defaults to "Layer" • top -- Pixelwise offset from the top of the canvas for the new layer. • left -- Pixelwise offset from the left of the canvas for the new layer. • compression -- Compression algorithm to use for the data. Returns A PixelLayer object has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int ShapeLayer class psd_tools.api.layers.ShapeLayer(*args: Any) Layer that has drawing in vector mask. property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int SmartObjectLayer class psd_tools.api.layers.SmartObjectLayer(psd: Any, record: LayerRecord, channels: ChannelDataList, parent: TGroupMixin | None) Layer that inserts external data. Use smart_object attribute to get the external data. See SmartObject. Example: import io if layer.smart_object.filetype == 'jpg': image = Image.open(io.BytesIO(layer.smart_object.data)) property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property effects: Effects Layer effects. Returns Effects has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property smart_object: SmartObject Associated smart object. Returns SmartObject. property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property width: int Width of the layer. Returns int TypeLayer class psd_tools.api.layers.TypeLayer(*args: Any) Layer that has text and styling information for fonts or paragraphs. Text is accessible at text property. Styling information for paragraphs is in engine_dict. Document styling information such as font list is is resource_dict. Currently, textual information is read-only. Example: if layer.kind == 'type': print(layer.text) print(layer.engine_dict['StyleRun']) # Extract font for each substring in the text. text = layer.engine_dict['Editor']['Text'].value fontset = layer.resource_dict['FontSet'] runlength = layer.engine_dict['StyleRun']['RunLengthArray'] rundata = layer.engine_dict['StyleRun']['RunArray'] index = 0 for length, style in zip(runlength, rundata): substring = text[index:index + length] stylesheet = style['StyleSheet']['StyleSheetData'] font = fontset[stylesheet['Font']] print('%r gets %s' % (substring, font)) index += length property bbox: tuple[int, int, int, int] (left, top, right, bottom) tuple. property blend_mode: BlendMode Blend mode of this layer. Writable. Example: from psd_tools.constants import BlendMode if layer.blend_mode == BlendMode.NORMAL: layer.blend_mode = BlendMode.SCREEN Returns BlendMode. property bottom: int Bottom coordinate. Returns int property clip_layers: list[Self] Clip layers associated with this layer. Returns list of layers property clipping_layer: bool Clipping flag for this layer. Writable. Returns bool composite(viewport: tuple[int, int, int, int] | None = None, force: bool = False, color: float | tuple[float, ...] | ndarray = 1.0, alpha: float | ndarray = 0.0, layer_filter: Callable | None = None, apply_icc: bool = True) -> Image | None Composite layer and masks (mask, vector mask, and clipping layers). Parameters • viewport -- Viewport bounding box specified by (x1, y1, x2, y2) tuple. Default is the layer's bbox. • force -- Boolean flag to force vector drawing. • color -- Backdrop color specified by scalar or tuple of scalar. The color value should be in [0.0, 1.0]. For example, (1., 0., 0.) specifies red in RGB color mode. • alpha -- Backdrop alpha in [0.0, 1.0]. • layer_filter -- Callable that takes a layer as argument and returns whether if the layer is composited. Default is is_visible(). Returns PIL.Image or None. delete_layer() -> Self Deletes the layer and all its child layers if the layer is a group from its parent (group or psdimage). property document_resources: Dict Resource set relevant to the document. property effects: Effects Layer effects. Returns Effects property engine_dict: Dict Styling information dict. has_clip_layers() -> bool Returns True if the layer has associated clipping. Returns bool has_effects() -> bool Returns True if the layer has effects. Returns bool has_mask() -> bool Returns True if the layer has a mask. Returns bool has_origination() -> bool Returns True if the layer has live shape properties. Returns bool has_pixels() -> bool Returns True if the layer has associated pixels. When this is True, topil method returns PIL.Image. Returns bool has_stroke() -> bool Returns True if the shape has a stroke. has_vector_mask() -> bool Returns True if the layer has a vector mask. Returns bool property height: int Height of the layer. Returns int is_group() -> bool Return True if the layer is a group. Returns bool is_visible() -> bool Layer visibility. Takes group visibility in account. Returns bool property kind: str Kind of this layer, such as group, pixel, shape, type, smartobject, or psdimage. Class name without layer suffix. Returns str property layer_id: int Layer ID. Returns int layer id. if the layer is not assigned an id, -1. property left: int Left coordinate. Writable. Returns int lock(lock_flags: int = ProtectedFlags.COMPLETE) -> None Locks a layer accordind to the combination of flags. Parameters lockflags -- An integer representing the locking state Example using the constants of ProtectedFlags and bitwise or operation to lock both pixels and positions: layer.lock(ProtectedFlags.COMPOSITE | ProtectedFlags.POSITION) property mask: Mask | None Returns mask associated with this layer. Returns Mask or None move_down(offset: int = 1) -> Self Moves the layer down a certain offset within the group the layer is in. Parameters offset move_to_group(group: GroupMixin) -> Self Moves the layer to the given group, updates the tree metadata as needed. Parameters group -- The group the current layer will be moved into. move_up(offset: int = 1) -> Self Moves the layer up a certain offset within the group the layer is in. Parameters offset property name: str Layer name. Writable. Returns str numpy(channel: str | None = None, real_mask: bool = True) -> ndarray | None Get NumPy array of the layer. Parameters channel -- Which channel to return, can be 'color', 'shape', 'alpha', or 'mask'. Default is 'color+alpha'. Returns numpy.ndarray or None if there is no pixel. property offset: tuple[int, int] (left, top) tuple. Writable. Returns tuple property opacity: int Opacity of this layer in [0, 255] range. Writable. Returns int property origination: list[Origination] Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See psd_tools.api.shape. Returns List of Invalidated, Rectangle, RoundedRectangle, Ellipse, or Line. property parent: TGroupMixin | None Parent of this layer. property resource_dict: Dict Resource set. property right: int Right coordinate. Returns int property size: tuple[int, int] (width, height) tuple. Returns tuple property stroke: Stroke | None Property for strokes. property tagged_blocks: TaggedBlocks Layer tagged blocks that is a dict-like container of settings. See psd_tools.constants.Tag for available keys. Returns TaggedBlocks. Example: from psd_tools.constants import Tag metadata = layer.tagged_blocks.get_data(Tag.METADATA_SETTING) property text: str Text in the layer. Read-only. NOTE: New-line character in Photoshop is '\r'. property text_type: TextType | None Text type. Read-only. Returns • psd_tools.constants.TextType.POINT for point type text (also known as character type) • psd_tools.constants.TextType.PARAGRAPH for paragraph type text (also known as area type) • None if text type cannot be determined or information is unavailable See psd_tools.constants.TextType. property top: int Top coordinate. Writable. Returns int topil(channel: int | None = None, apply_icc: bool = True) -> Image | None Get PIL Image of the layer. Parameters • channel -- Which channel to return; e.g., 0 for 'R' channel in RGB image. See ChannelID. When None, the method returns all the channels supported by PIL modes. • apply_icc -- Whether to apply ICC profile conversion to sRGB. Returns PIL.Image, or None if the layer has no pixels. Example: from psd_tools.constants import ChannelID image = layer.topil() red = layer.topil(ChannelID.CHANNEL_0) alpha = layer.topil(ChannelID.TRANSPARENCY_MASK) NOTE: Not all of the PSD image modes are supported in PIL.Image. For example, 'CMYK' mode cannot include alpha channel in PIL. In this case, topil drops alpha channel. property transform: tuple[float, float, float, float, float, float] Matrix (xx, xy, yx, yy, tx, ty) applies affine transformation. property vector_mask: VectorMask | None Returns vector mask associated with this layer. Returns VectorMask or None property visible: bool Layer visibility. Doesn't take group visibility in account. Writable. Returns bool property warp: DescriptorBlock | None Warp configuration. property width: int Width of the layer. Returns int psd_tools.api.mask Mask module. Mask class psd_tools.api.mask.Mask(layer: Any) Mask data attached to a layer. There are two distinct internal mask data: user mask and vector mask. User mask refers any pixel-based mask whereas vector mask refers a mask from a shape path. Internally, two masks are combined and referred real mask. property background_color: int Background color. property bbox: tuple[int, int, int, int] BBox property bottom: int Bottom coordinate. property disabled: bool Disabled. property flags: MaskFlags Flags. property height: int Height. property left: int Left coordinate. property parameters Parameters. property real_flags: MaskFlags | None Real flag. property right: int Right coordinate. property size: tuple[int, int] (Width, Height) tuple. property top: int Top coordinate. topil(real: bool = True, **kwargs: Any) -> Image | None Get PIL Image of the mask. Parameters real -- When True, returns pixel + vector mask combined. Returns PIL Image object, or None if the mask is empty. property width: int Width. psd_tools.api.shape Shape module. In PSD/PSB, shapes are all represented as VectorMask in each layer, and optionally there might be Origination object to control live shape properties and Stroke to specify how outline is stylized. VectorMask class psd_tools.api.shape.VectorMask(data: VectorMaskSetting) Vector mask data. Vector mask is a resolution-independent mask that consists of one or more Path objects. In Photoshop, all the path objects are represented as Bezier curves. Check paths property for how to deal with path objects. property bbox: tuple[float, float, float, float] Bounding box tuple (left, top, right, bottom) in relative coordinates, where top-left corner is (0., 0.) and bottom-right corner is (1., 1.). Returns tuple property clipboard_record: ClipboardRecord | None Clipboard record containing bounding box information. Depending on the Photoshop version, this field can be None. property disabled: bool If the mask is disabled. property initial_fill_rule: int Initial fill rule. When 0, fill inside of the path. When 1, fill outside of the shape. Returns int property inverted: bool Invert the mask. property not_linked: bool If the knots are not linked. property paths: list[Subpath] List of Subpath. Subpath is a list-like structure that contains one or more Knot items. Knot contains relative coordinates of control points for a Bezier curve. index indicates which origination item the subpath belongs, and operation indicates how to combine multiple shape paths. In PSD, path fill rule is even-odd. Example: for subpath in layer.vector_mask.paths: anchors = [( int(knot.anchor[1] * psd.width), int(knot.anchor[0] * psd.height), ) for knot in subpath] Returns List of Subpath. Stroke class psd_tools.api.shape.Stroke(data: VectorStrokeContentSetting) Stroke contains decorative information for strokes. This is a thin wrapper around Descriptor structure. Check _data attribute to get the raw data. property blend_mode Blend mode. property content Fill effect. property enabled: bool If the stroke is enabled. property fill_enabled: bool If the stroke fill is enabled. property line_alignment: str Alignment, one of inner, outer, center. property line_cap_type: str Cap type, one of butt, round, square. property line_dash_offset: float Line dash offset in float. Returns float property line_dash_set: list Line dash set in list of UnitFloat. Returns list property line_join_type: str Join type, one of miter, round, bevel. property line_width: float Stroke width in float. property miter_limit Miter limit in float. property opacity Opacity value. property stroke_adjust Stroke adjust Origination Origination keeps live shape properties for some of the primitive shapes. Origination objects are accessible via origination property of layers. Following primitive shapes are defined: Invalidated, Line, Rectangle, Ellipse, and RoundedRectangle. Invalidated class psd_tools.api.shape.Invalidated(data) Invalidated live shape. This equals to a primitive shape that does not provide Live shape properties. Use VectorMask to access shape information instead of this origination object. property invalidated: bool Returns bool Line class psd_tools.api.shape.Line(data) Line live shape. property arrow_conc: int Returns int property arrow_end: bool Line arrow end. Returns bool property arrow_length: float Line arrow length. Returns float property arrow_start: bool Line arrow start. Returns bool property arrow_width: float Line arrow width. Returns float property bbox: tuple[float, float, float, float] Bounding box of the live shape. Returns Descriptor property index: int Origination item index. Returns int property invalidated: bool Returns bool property line_end: Descriptor Line end. Returns Descriptor property line_start: Descriptor Line start. Returns Descriptor property line_weight: float Line weight Returns float property origin_type: int Type of the vector shape. • 1: Rectangle • 2: RoundedRectangle • 4: Line • 5: Ellipse Returns int property resolution: float Resolution. Returns float Ellipse class psd_tools.api.shape.Ellipse(data) Ellipse live shape. property bbox: tuple[float, float, float, float] Bounding box of the live shape. Returns Descriptor property index: int Origination item index. Returns int property invalidated: bool Returns bool property origin_type: int Type of the vector shape. • 1: Rectangle • 2: RoundedRectangle • 4: Line • 5: Ellipse Returns int property resolution: float Resolution. Returns float Rectangle class psd_tools.api.shape.Rectangle(data) Rectangle live shape. property bbox: tuple[float, float, float, float] Bounding box of the live shape. Returns Descriptor property index: int Origination item index. Returns int property invalidated: bool Returns bool property origin_type: int Type of the vector shape. • 1: Rectangle • 2: RoundedRectangle • 4: Line • 5: Ellipse Returns int property resolution: float Resolution. Returns float RoundedRectangle class psd_tools.api.shape.RoundedRectangle(data) Rounded rectangle live shape. property bbox: tuple[float, float, float, float] Bounding box of the live shape. Returns Descriptor property index: int Origination item index. Returns int property invalidated: bool Returns bool property origin_type: int Type of the vector shape. • 1: Rectangle • 2: RoundedRectangle • 4: Line • 5: Ellipse Returns int property radii Corner radii of rounded rectangles. The order is top-left, top-right, bottom-left, bottom-right. Returns Descriptor property resolution: float Resolution. Returns float psd_tools.api.smart_object Smart object module. SmartObject class psd_tools.api.smart_object.SmartObject(layer) Smart object that represents embedded or external file. Smart objects are attached to SmartObjectLayer. property data: bytes Embedded file content, or empty if kind is external or alias property filename: str Original file name of the object. property filesize: int File size of the object. property filetype: str Preferred file extension, such as jpg. is_psd() -> bool Return True if the file is embedded PSD/PSB. property kind: str Kind of the link, 'data', 'alias', or 'external'. open(external_dir: str | None = None) -> Iterator[BytesIO] Open the smart object as binary IO. Parameters external_dir -- Path to the directory of the external file. Example: with layer.smart_object.open() as f: data = f.read() property resolution Resolution of the object. save(filename: str | None = None) -> None Save the smart object to a file. Parameters filename -- File name to export. If None, use the embedded name. property transform_box A tuple representing the coordinates of the smart objects's transformed box. This box is the result of one or more transformations such as scaling, rotation, translation, or skewing to the original bounding box of the smart object. The format of the tuple is as follows: (x1, y1, x2, y2, x3, y3, x4, y4) Where 1 is top left corner, 2 is top right, 3 is bottom right and 4 is bottom left. property unique_id: str UUID of the object. property warp Warp parameters. psd_tools.constants Various constants for psd_tools BlendMode class psd_tools.constants.BlendMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Blend modes. COLOR = b'colr' COLOR_BURN = b'idiv' COLOR_DODGE = b'div ' DARKEN = b'dark' DARKER_COLOR = b'dkCl' DIFFERENCE = b'diff' DISSOLVE = b'diss' DIVIDE = b'fdiv' EXCLUSION = b'smud' HARD_LIGHT = b'hLit' HARD_MIX = b'hMix' HUE = b'hue ' LIGHTEN = b'lite' LIGHTER_COLOR = b'lgCl' LINEAR_BURN = b'lbrn' LINEAR_DODGE = b'lddg' LINEAR_LIGHT = b'lLit' LUMINOSITY = b'lum ' MULTIPLY = b'mul ' NORMAL = b'norm' OVERLAY = b'over' PASS_THROUGH = b'pass' PIN_LIGHT = b'pLit' SATURATION = b'sat ' SCREEN = b'scrn' SOFT_LIGHT = b'sLit' SUBTRACT = b'fsub' VIVID_LIGHT = b'vLit' ChannelID class psd_tools.constants.ChannelID(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Channel types. CHANNEL_0 = 0 CHANNEL_1 = 1 CHANNEL_2 = 2 CHANNEL_3 = 3 CHANNEL_4 = 4 CHANNEL_5 = 5 CHANNEL_6 = 6 CHANNEL_7 = 7 CHANNEL_8 = 8 CHANNEL_9 = 9 REAL_USER_LAYER_MASK = -3 TRANSPARENCY_MASK = -1 USER_LAYER_MASK = -2 Clipping class psd_tools.constants.Clipping(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Clipping. BASE = 0 NON_BASE = 1 ColorMode class psd_tools.constants.ColorMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Color mode. BITMAP = 0 CMYK = 4 DUOTONE = 8 GRAYSCALE = 1 INDEXED = 2 LAB = 9 MULTICHANNEL = 7 RGB = 3 static channels(value, alpha=False) ColorSpaceID class psd_tools.constants.ColorSpaceID(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Color space types. CMYK = 2 GRAYSCALE = 8 HSB = 1 LAB = 7 RGB = 0 Compression class psd_tools.constants.Compression(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Compression modes. Compression. 0 = Raw Data, 1 = RLE compressed, 2 = ZIP without prediction, 3 = ZIP with prediction. RAW = 0 RLE = 1 ZIP = 2 ZIP_WITH_PREDICTION = 3 EffectOSType class psd_tools.constants.EffectOSType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) OS Type keys for Layer Effects. BEVEL = b'bevl' COMMON_STATE = b'cmnS' DROP_SHADOW = b'dsdw' INNER_GLOW = b'iglw' INNER_SHADOW = b'isdw' OUTER_GLOW = b'oglw' SOLID_FILL = b'sofi' GlobalLayerMaskKind class psd_tools.constants.GlobalLayerMaskKind(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Global layer mask kind. COLOR_PROTECTED = 1 COLOR_SELECTED = 0 PER_LAYER = 128 LinkedLayerType class psd_tools.constants.LinkedLayerType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Linked layer types. ALIAS = b'liFA' DATA = b'liFD' EXTERNAL = b'liFE' PathResourceID class psd_tools.constants.PathResourceID(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) CLIPBOARD = 7 CLOSED_KNOT_LINKED = 1 CLOSED_KNOT_UNLINKED = 2 CLOSED_LENGTH = 0 INITIAL_FILL = 8 OPEN_KNOT_LINKED = 4 OPEN_KNOT_UNLINKED = 5 OPEN_LENGTH = 3 PATH_FILL = 6 PlacedLayerType class psd_tools.constants.PlacedLayerType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) IMAGE_STACK = 3 RASTER = 2 UNKNOWN = 0 VECTOR = 1 PrintScaleStyle class psd_tools.constants.PrintScaleStyle(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Print scale style. CENTERED = 0 SIZE_TO_FIT = 1 USER_DEFINED = 2 Resource class psd_tools.constants.Resource(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Image resource keys. Note the following is not defined for performance reasons. • PATH_INFO_10 to PATH_INFO_989 corresponding to 2010 - 2989 • PLUGIN_RESOURCES_10 to PLUGIN_RESOURCES_989 corresponding to 4010 - 4989 ALPHA_IDENTIFIERS = 1053 ALPHA_NAMES_PASCAL = 1006 ALPHA_NAMES_UNICODE = 1045 ALTERNATE_DUOTONE_COLORS = 1066 ALTERNATE_SPOT_COLORS = 1067 AUTO_SAVE_FILE_PATH = 1086 AUTO_SAVE_FORMAT = 1087 BACKGROUND_COLOR = 1010 BORDER_INFO = 1009 CAPTION_DIGEST = 1061 CAPTION_PASCAL = 1008 CLIPPING_PATH_NAME = 2999 COLOR_HALFTONING_INFO = 1013 COLOR_SAMPLERS_RESOURCE = 1073 COLOR_SAMPLERS_RESOURCE_OBSOLETE = 1038 COLOR_TRANSFER_FUNCTION = 1016 COPYRIGHT_FLAG = 1034 COUNT_INFO = 1080 DISPLAY_INFO = 1077 DISPLAY_INFO_OBSOLETE = 1007 DUOTONE_HALFTONING_INFO = 1014 DUOTONE_IMAGE_INFO = 1018 DUOTONE_TRANSFER_FUNCTION = 1017 EFFECTIVE_BW = 1019 EFFECTS_VISIBLE = 1042 EPS_OPTIONS = 1021 EXIF_DATA_1 = 1058 EXIF_DATA_3 = 1059 GLOBAL_ALTITUDE = 1049 GLOBAL_ANGLE = 1037 GRAYSCALE_HALFTONING_INFO = 1012 GRAYSCALE_TRANSFER_FUNCTION = 1015 GRID_AND_GUIDES_INFO = 1032 HDR_TONING_INFO = 1070 ICC_PROFILE = 1039 ICC_UNTAGGED_PROFILE = 1041 IDS_SEED_NUMBER = 1044 IMAGE_MODE_RAW = 1029 IMAGE_READY_7_ROLLOVER_EXPANDED_STATE = 7003 IMAGE_READY_DATA_SETS = 7001 IMAGE_READY_DEFAULT_SELECTED_STATE = 7002 IMAGE_READY_ROLLOVER_EXPANDED_STATE = 7004 IMAGE_READY_SAVE_LAYER_SETTINGS = 7005 IMAGE_READY_VARIABLES = 7000 IMAGE_READY_VERSION = 7006 INDEXED_COLOR_TABLE_COUNT = 1046 IPTC_NAA = 1028 JPEG_QUALITY = 1030 JUMP_TO_XPEP = 1052 LAYER_COMPS = 1065 LAYER_GROUPS_ENABLED_ID = 1072 LAYER_GROUP_INFO = 1026 LAYER_SELECTION_IDS = 1069 LAYER_STATE_INFO = 1024 LIGHTROOM_WORKFLOW = 8000 MAC_NSPRINTINFO = 1084 MAC_PAGE_FORMAT_INFO = 1002 MAC_PRINT_MANAGER_INFO = 1001 MEASUREMENT_SCALE = 1074 OBSOLETE1 = 1000 OBSOLETE2 = 1003 OBSOLETE3 = 1020 OBSOLETE4 = 1023 OBSOLETE5 = 1027 ONION_SKINS = 1078 ORIGIN_PATH_INFO = 3000 PATH_INFO_0 = 2000 PATH_INFO_1 = 2001 PATH_INFO_2 = 2002 PATH_INFO_3 = 2003 PATH_INFO_4 = 2004 PATH_INFO_5 = 2005 PATH_INFO_6 = 2006 PATH_INFO_7 = 2007 PATH_INFO_8 = 2008 PATH_INFO_9 = 2009 PATH_INFO_990 = 2990 PATH_INFO_991 = 2991 PATH_INFO_992 = 2992 PATH_INFO_993 = 2993 PATH_INFO_994 = 2994 PATH_INFO_995 = 2995 PATH_INFO_996 = 2996 PATH_INFO_997 = 2997 PATH_SELECTION_STATE = 1088 PIXEL_ASPECT_RATIO = 1064 PLUGIN_RESOURCE_0 = 4000 PLUGIN_RESOURCE_1 = 4001 PLUGIN_RESOURCE_2 = 4002 PLUGIN_RESOURCE_3 = 4003 PLUGIN_RESOURCE_4 = 4004 PLUGIN_RESOURCE_4990 = 4990 PLUGIN_RESOURCE_4991 = 4991 PLUGIN_RESOURCE_4992 = 4992 PLUGIN_RESOURCE_4993 = 4993 PLUGIN_RESOURCE_4994 = 4994 PLUGIN_RESOURCE_4995 = 4995 PLUGIN_RESOURCE_4996 = 4996 PLUGIN_RESOURCE_4997 = 4997 PLUGIN_RESOURCE_4998 = 4998 PLUGIN_RESOURCE_4999 = 4990 PLUGIN_RESOURCE_5 = 4005 PLUGIN_RESOURCE_6 = 4006 PLUGIN_RESOURCE_7 = 4007 PLUGIN_RESOURCE_8 = 4008 PLUGIN_RESOURCE_9 = 4009 PRINT_FLAGS = 1011 PRINT_FLAGS_INFO = 10000 PRINT_INFO_CS2 = 1071 PRINT_INFO_CS5 = 1082 PRINT_SCALE = 1062 PRINT_STYLE = 1083 QUICK_MASK_INFO = 1022 RESOLUTION_INFO = 1005 SHEET_DISCLOSURE = 1076 SLICES = 1050 SPOT_HALFTONE = 1043 THUMBNAIL_RESOURCE = 1036 THUMBNAIL_RESOURCE_PS4 = 1033 TIMELINE_INFO = 1075 TRANSPARENCY_INDEX = 1047 URL = 1035 URL_LIST = 1054 VERSION_INFO = 1057 WATERMARK = 1040 WINDOWS_DEVMODE = 1085 WORKFLOW_URL = 1051 WORKING_PATH = 1025 XMP_METADATA = 1060 static is_path_info(value) static is_plugin_resource(value) SectionDivider class psd_tools.constants.SectionDivider(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) BOUNDING_SECTION_DIVIDER = 3 CLOSED_FOLDER = 2 OPEN_FOLDER = 1 OTHER = 0 Tag class psd_tools.constants.Tag(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Tagged blocks keys. ALPHA = b'Alph' ANIMATION_EFFECTS = b'anFX' ANNOTATIONS = b'Anno' ARTBOARD_DATA1 = b'artb' ARTBOARD_DATA2 = b'artd' ARTBOARD_DATA3 = b'abdd' BLACK_AND_WHITE = b'blwh' BLEND_CLIPPING_ELEMENTS = b'clbl' BLEND_FILL_OPACITY = b'iOpa' BLEND_INTERIOR_ELEMENTS = b'infx' BRIGHTNESS_AND_CONTRAST = b'brit' CHANNEL_BLENDING_RESTRICTIONS_SETTING = b'brst' CHANNEL_MIXER = b'mixr' COLOR_BALANCE = b'blnc' COLOR_LOOKUP = b'clrL' COMPOSITOR_INFO = b'cinf' CONTENT_GENERATOR_EXTRA_DATA = b'CgEd' CURVES = b'curv' EFFECTS_LAYER = b'lrFX' EXPORT_SETTING1 = b'extd' EXPORT_SETTING2 = b'extn' EXPOSURE = b'expA' FILTER_EFFECTS1 = b'FXid' FILTER_EFFECTS2 = b'FEid' FILTER_EFFECTS3 = b'FELS' FILTER_MASK = b'FMsk' FOREIGN_EFFECT_ID = b'ffxi' FRAMED_GROUP = b'frgb' GRADIENT_FILL_SETTING = b'GdFl' GRADIENT_MAP = b'grdm' HUE_SATURATION = b'hue2' HUE_SATURATION_V4 = b'hue ' INVERT = b'nvrt' KNOCKOUT_SETTING = b'knko' LAYER = b'Layr' LAYER_16 = b'Lr16' LAYER_32 = b'Lr32' LAYER_ID = b'lyid' LAYER_MASK_AS_GLOBAL_MASK = b'lmgm' LAYER_NAME_SOURCE_SETTING = b'lnsr' LAYER_VERSION = b'lyvr' LEVELS = b'levl' LINKED_LAYER1 = b'lnkD' LINKED_LAYER2 = b'lnk2' LINKED_LAYER3 = b'lnk3' LINKED_LAYER_EXTERNAL = b'lnkE' METADATA_SETTING = b'shmd' NESTED_SECTION_DIVIDER_SETTING = b'lsdk' OBJECT_BASED_EFFECTS_LAYER_INFO = b'lfx2' OBJECT_BASED_EFFECTS_LAYER_INFO_V0 = b'lmfx' OBJECT_BASED_EFFECTS_LAYER_INFO_V1 = b'lfxs' PATT = b'patt' PATTERNS1 = b'Patt' PATTERNS2 = b'Pat2' PATTERNS3 = b'Pat3' PATTERN_DATA = b'shpa' PATTERN_FILL_SETTING = b'PtFl' PHOTO_FILTER = b'phfl' PIXEL_SOURCE_DATA1 = b'PxSc' PIXEL_SOURCE_DATA2 = b'PxSD' PLACED_LAYER1 = b'plLd' PLACED_LAYER2 = b'PlLd' POSTERIZE = b'post' PROTECTED_SETTING = b'lspf' REFERENCE_POINT = b'fxrp' SAVING_MERGED_TRANSPARENCY = b'Mtrn' SAVING_MERGED_TRANSPARENCY16 = b'Mt16' SAVING_MERGED_TRANSPARENCY32 = b'Mt32' SECTION_DIVIDER_SETTING = b'lsct' SELECTIVE_COLOR = b'selc' SHEET_COLOR_SETTING = b'lclr' SMART_OBJECT_LAYER_DATA1 = b'SoLd' SMART_OBJECT_LAYER_DATA2 = b'SoLE' SOLID_COLOR_SHEET_SETTING = b'SoCo' TEXT_ENGINE_DATA = b'Txt2' THRESHOLD = b'thrs' TRANSPARENCY_SHAPES_LAYER = b'tsly' TYPE_TOOL_INFO = b'tySh' TYPE_TOOL_OBJECT_SETTING = b'TySh' UNICODE_LAYER_NAME = b'luni' UNICODE_PATH_NAME = b'pths' USER_MASK = b'LMsk' USING_ALIGNED_RENDERING = b'sn2P' VECTOR_MASK_AS_GLOBAL_MASK = b'vmgm' VECTOR_MASK_SETTING1 = b'vmsk' VECTOR_MASK_SETTING2 = b'vsms' VECTOR_ORIGINATION_DATA = b'vogk' VECTOR_ORIGINATION_UNKNOWN = b'vowv' VECTOR_STROKE_CONTENT_DATA = b'vscg' VECTOR_STROKE_DATA = b'vstk' VIBRANCE = b'vibA' TextType class psd_tools.constants.TextType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Type of text PARAGRAPH = 1 POINT = 0 psd_tools.psd Low-level API that translates binary data to Python structure. All the data structure in this subpackage inherits from one of the object defined in psd_tools.psd.base module. PSD class psd_tools.psd.PSD(header=NOTHING, color_mode_data=NOTHING, image_resources=NOTHING, layer_and_mask_information=NOTHING, image_data=NOTHING) Low-level PSD file structure that resembles the specification. Example: from psd_tools.psd import PSD with open(input_file, 'rb') as f: psd = PSD.read(f) with open(output_file, 'wb') as f: psd.write(f) header See FileHeader. color_mode_data See ColorModeData. image_resources See ImageResources. layer_and_mask_information See LayerAndMaskInformation. image_data See ImageData. psd_tools.psd.base Base data structures intended for inheritance. All the data objects in this subpackage inherit from the base classes here. That means, all the data structures in the psd_tools.psd subpackage implements the methods of BaseElement for serialization and decoding. Objects that inherit from the BaseElement typically gets attrs decoration to have data fields. BaseElement class psd_tools.psd.base.BaseElement Base element of various PSD file structs. All the data objects in psd_tools.psd subpackage inherit from this class. classmethod read(cls, fp) Read the element from a file-like object. write(self, fp) Write the element to a file-like object. classmethod frombytes(self, data, *args, **kwargs) Read the element from bytes. tobytes(self, *args, **kwargs) Write the element to bytes. validate(self) Validate the attribute. EmptyElement class psd_tools.psd.base.EmptyElement Empty element that does not have a value. ValueElement class psd_tools.psd.base.ValueElement(value=None) Single value wrapper that has a value attribute. Pretty printing shows the internal value by default. Inherit with @attr.s(repr=False) decorator to keep this behavior. value Internal value. NumericElement class psd_tools.psd.base.NumericElement(value=0.0) Single value element that has a numeric value attribute. IntegerElement class psd_tools.psd.base.IntegerElement(value=0) Single integer value element that has a value attribute. Use with @attr.s(repr=False) decorator. ShortIntegerElement class psd_tools.psd.base.ShortIntegerElement(value=0) Single short integer element that has a value attribute. Use with @attr.s(repr=False) decorator. ByteElement class psd_tools.psd.base.ByteElement(value=0) Single 1-byte integer element that has a value attribute. Use with @attr.s(repr=False) decorator. BooleanElement class psd_tools.psd.base.BooleanElement(value=False) Single bool value element that has a value attribute. Use with @attr.s(repr=False) decorator. StringElement class psd_tools.psd.base.StringElement(value: str = '') Single unicode string. value str value ListElement class psd_tools.psd.base.ListElement(items=NOTHING) List-like element that has items list. DictElement class psd_tools.psd.base.DictElement(items=NOTHING) Dict-like element that has items OrderedDict. psd_tools.psd.color_mode_data Color mode data structure. ColorModeData class psd_tools.psd.color_mode_data.ColorModeData(value: bytes = b'') Color mode data section of the PSD file. For indexed color images the data is the color table for the image in a non-interleaved order. Duotone images also have this data, but the data format is undocumented. interleave() Returns interleaved color table in bytes. psd_tools.psd.descriptor Descriptor data structure. Descriptors are basic data structure used throughout PSD files. Descriptor is one kind of serialization protocol for data objects, and enum classes in psd_tools.terminology or bytes indicates what kind of descriptor it is. The class ID can be pre-defined enum if the tag is 4-byte length or plain bytes if the length is arbitrary. They depend on the internal version of Adobe Photoshop but the detail is unknown. Pretty printing is the best approach to check the descriptor content: from IPython.pretty import pprint pprint(descriptor) Alias class psd_tools.psd.descriptor.Alias(value: bytes = b'\x00\x00\x00\x00') Alias structure equivalent to RawData. Bool class psd_tools.psd.descriptor.Bool(value=False) Bool structure. value bool value Class class psd_tools.psd.descriptor.Class(name: str = '', classID: bytes = b'\x00\x00\x00\x00') Class structure. name str value classID bytes in Klass Class1 class psd_tools.psd.descriptor.Class1(name: str = '', classID: bytes = b'\x00\x00\x00\x00') Class structure equivalent to Class. Class2 class psd_tools.psd.descriptor.Class2(name: str = '', classID: bytes = b'\x00\x00\x00\x00') Class structure equivalent to Class. Class3 class psd_tools.psd.descriptor.Class3(name: str = '', classID: bytes = b'\x00\x00\x00\x00') Class structure equivalent to Class. Descriptor class psd_tools.psd.descriptor.Descriptor(items=NOTHING, name: str = '', classID=b'null') Dict-like descriptor structure. Key values can be 4-character bytes in Key or arbitrary length bytes. Supports direct access by Key. Example: from psd_tools.terminology import Key descriptor[Key.Enabled] for key in descriptor: print(descriptor[key]) name str classID bytes in Klass Double class psd_tools.psd.descriptor.Double(value=0.0) Double structure. value float value Enumerated class psd_tools.psd.descriptor.Enumerated(typeID: bytes = b'\x00\x00\x00\x00', enum: bytes = b'\x00\x00\x00\x00') Enum structure. typeID bytes in Type enum bytes in Enum get_name() Get enum name. EnumeratedReference class psd_tools.psd.descriptor.EnumeratedReference(name: str = '', classID: bytes = b'\x00\x00\x00\x00', typeID: bytes = b'\x00\x00\x00\x00', enum: bytes = b'\x00\x00\x00\x00') Enumerated reference structure. name str value classID bytes in Klass typeID bytes in Type enum bytes in Enum GlobalObject class psd_tools.psd.descriptor.GlobalObject(items=NOTHING, name: str = '', classID=b'null') Global object structure equivalent to Descriptor. Identifier class psd_tools.psd.descriptor.Identifier(value=0) Identifier equivalent to Integer. Index class psd_tools.psd.descriptor.Index(value=0) Index equivalent to Integer. Integer class psd_tools.psd.descriptor.Integer(value=0) Integer structure. value int value LargeInteger class psd_tools.psd.descriptor.LargeInteger(value=0) LargeInteger structure. value int value List class psd_tools.psd.descriptor.List(items=NOTHING) List structure. Example: for item in list_value: print(item) Name class psd_tools.psd.descriptor.Name(name: str = '', classID: bytes = b'\x00\x00\x00\x00', value: str = '') Name structure (Undocumented). name str classID bytes in Klass value str ObjectArray class psd_tools.psd.descriptor.ObjectArray(items=NOTHING, items_count: int = 0, name: str = '', classID=b'null') Object array structure almost equivalent to Descriptor. items_count int value name str value classID bytes in Klass Property class psd_tools.psd.descriptor.Property(name: str = '', classID: bytes = b'\x00\x00\x00\x00', keyID: bytes = b'\x00\x00\x00\x00') Property structure. name str value classID bytes in Klass keyID bytes in Key Offset class psd_tools.psd.descriptor.Offset(name: str = '', classID: bytes = b'\x00\x00\x00\x00', value=0) Offset structure. name str value classID bytes in Klass value int value Path class psd_tools.psd.descriptor.Path(value: bytes = b'\x00\x00\x00\x00') Undocumented path structure equivalent to RawData. RawData class psd_tools.psd.descriptor.RawData(value: bytes = b'\x00\x00\x00\x00') RawData structure. value bytes value Reference class psd_tools.psd.descriptor.Reference(items=NOTHING) Reference structure equivalent to List. String class psd_tools.psd.descriptor.String(value: str = '') String structure. value str value UnitFloat class psd_tools.psd.descriptor.UnitFloat(value: float = 0.0, unit=Unit._None) Unit float structure. unit unit of the value in Unit or Enum value float value UnitFloats class psd_tools.psd.descriptor.UnitFloats(unit=Unit._None, values=NOTHING) Unit floats structure. unit unit of the value in Unit or Enum values List of float values psd_tools.psd.engine_data EngineData structure. PSD file embeds text formatting data in its own markup language referred EngineData. The format looks like the following: << /EngineDict << /Editor << /Text (˛ˇMake a change and save.) >> >> /Font << /Name (˛ˇHelveticaNeue-Light) /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StyleSheetSet [ << /Name (˛ˇNormal RGB) >> ] >> >> EngineData class psd_tools.psd.engine_data.EngineData(items=NOTHING) Dict-like element. TYPE_TOOL_OBJECT_SETTING tagged block contains this object in its descriptor. EngineData2 class psd_tools.psd.engine_data.EngineData2(items=NOTHING) Dict-like element. TEXT_ENGINE_DATA tagged block has this object. Bool class psd_tools.psd.engine_data.Bool(value=False) Bool element. Dict class psd_tools.psd.engine_data.Dict(items=NOTHING) Dict-like element. Float class psd_tools.psd.engine_data.Float(value=0.0) Float element. Integer class psd_tools.psd.engine_data.Integer(value=0) Integer element. List class psd_tools.psd.engine_data.List(items=NOTHING) List-like element. Property class psd_tools.psd.engine_data.Property(value=None) Property element. String class psd_tools.psd.engine_data.String(value=None) String element. psd_tools.psd.effects_layer Effects layer structure. Note the structures in this module is obsolete and object-based layer effects are stored in tagged blocks. EffectsLayer class psd_tools.psd.effects_layer.EffectsLayer(items=NOTHING, version: int = 0) Dict-like EffectsLayer structure. See psd_tools.constants.EffectOSType for available keys. version CommonStateInfo class psd_tools.psd.effects_layer.CommonStateInfo(version: int = 0, visible: int = 1) Effects layer common state info. version visible ShadowInfo class psd_tools.psd.effects_layer.ShadowInfo(version: int = 0, blur: int = 0, intensity: int = 0, angle: int = 0, distance: int = 0, color=NOTHING, blend_mode=BlendMode.NORMAL, enabled: int = 0, use_global_angle: int = 0, opacity: int = 0, native_color=NOTHING) Effects layer shadow info. version blur intensity angle distance color blend_mode enabled use_global_angle opacity native_color OuterGlowInfo class psd_tools.psd.effects_layer.OuterGlowInfo(version: int = 0, blur: int = 0, intensity: int = 0, color=NOTHING, blend_mode=BlendMode.NORMAL, enabled: int = 0, opacity: int = 0, native_color=None) Effects layer outer glow info. version blur intensity color blend_mode enabled opacity native_color InnerGlowInfo class psd_tools.psd.effects_layer.InnerGlowInfo(version: int = 0, blur: int = 0, intensity: int = 0, color=NOTHING, blend_mode=BlendMode.NORMAL, enabled: int = 0, opacity: int = 0, invert=None, native_color=None) Effects layer inner glow info. version blur intensity color blend_mode enabled opacity invert native_color BevelInfo class psd_tools.psd.effects_layer.BevelInfo(version: int = 0, angle: int = 0, depth: int = 0, blur: int = 0, highlight_blend_mode=BlendMode.NORMAL, shadow_blend_mode=BlendMode.NORMAL, highlight_color=NOTHING, shadow_color=NOTHING, bevel_style: int = 0, highlight_opacity: int = 0, shadow_opacity: int = 0, enabled: int = 0, use_global_angle: int = 0, direction: int = 0, real_highlight_color=None, real_shadow_color=None) Effects layer bevel info. version angle depth blur highlight_blend_mode shadow_blend_mode highlight_color shadow_color highlight_opacity shadow_opacity enabled use_global_angle direction real_hightlight_color real_shadow_color SolidFillInfo class psd_tools.psd.effects_layer.SolidFillInfo(version: int = 2, blend_mode=BlendMode.NORMAL, color=NOTHING, opacity: int = 0, enabled: int = 0, native_color=NOTHING) Effects layer inner glow info. version blend_mode color opacity enabled native_color psd_tools.psd.filter_effects Filter effects structure. FilterEffects class psd_tools.psd.filter_effects.FilterEffects(items=NOTHING, version: int = 1) List-like FilterEffects structure. See FilterEffect. version FilterEffect class psd_tools.psd.filter_effects.FilterEffect(uuid=None, version=None, rectangle=None, depth=None, max_channels=None, channels=None, extra=None) FilterEffect structure. uuid version rectangle depth max_channels channels List of FilterEffectChannel. extra See FilterEffectExtra. FilterEffectChannel class psd_tools.psd.filter_effects.FilterEffectChannel(is_written=0, compression=None, data=b'') FilterEffectChannel structure. is_written compression data FilterEffectExtra class psd_tools.psd.filter_effects.FilterEffectExtra(is_written=0, rectangle=NOTHING, compression: int = 0, data: bytes = b'') FilterEffectExtra structure. is_written rectangle compression data psd_tools.psd.header File header structure. FileHeader class psd_tools.psd.header.FileHeader(signature: bytes = b'8BPS', version: int = 1, channels: int = 4, height: int = 64, width: int = 64, depth: int = 8, color_mode=ColorMode.RGB) Header section of the PSD file. Example: from psd_tools.psd.header import FileHeader from psd_tools.constants import ColorMode header = FileHeader(channels=2, height=359, width=400, depth=8, color_mode=ColorMode.GRAYSCALE) signature Signature: always equal to b'8BPS'. version Version number. PSD is 1, and PSB is 2. channels The number of channels in the image, including any user-defined alpha channel. height The height of the image in pixels. width The width of the image in pixels. depth The number of bits per channel. color_mode The color mode of the file. See ColorMode psd_tools.psd.image_data Image data section structure. ImageData corresponds to the last section of the PSD/PSB file where a composited image is stored. When the file does not contain layers, this is the only place pixels are saved. ImageData class psd_tools.psd.image_data.ImageData(compression=Compression.RAW, data: bytes = b'') Merged channel image data. compression See Compression. data bytes as compressed in the compression flag. get_data(header, split=True) Get decompressed data. Parameters header -- See FileHeader. Returns list of bytes corresponding each channel. classmethod new(header, color=0, compression=Compression.RAW) Create a new image data object. Parameters • header -- FileHeader. • compression -- compression type. • color -- default color. int or iterable for channel length. set_data(data, header) Set raw data and compress. Parameters • data -- list of raw data bytes corresponding channels. • compression -- compression type, see Compression. • header -- See FileHeader. Returns length of compressed data. psd_tools.psd.image_resources Image resources section structure. Image resources are used to store non-pixel data associated with images, such as pen tool paths or slices. See Resource to check available resource names. Example: from psd_tools.constants import Resource version_info = psd.image_resources.get_data(Resource.VERSION_INFO) The following resources are plain bytes: Resource.OBSOLETE1: 1000 Resource.MAC_PRINT_MANAGER_INFO: 1001 Resource.MAC_PAGE_FORMAT_INFO: 1002 Resource.OBSOLETE2: 1003 Resource.DISPLAY_INFO_OBSOLETE: 1007 Resource.BORDER_INFO: 1009 Resource.DUOTONE_IMAGE_INFO: 1018 Resource.EFFECTIVE_BW: 1019 Resource.OBSOLETE3: 1020 Resource.EPS_OPTIONS: 1021 Resource.QUICK_MASK_INFO: 1022 Resource.OBSOLETE4: 1023 Resource.WORKING_PATH: 1025 Resource.OBSOLETE5: 1027 Resource.IPTC_NAA: 1028 Resource.IMAGE_MODE_RAW: 1029 Resource.JPEG_QUALITY: 1030 Resource.URL: 1035 Resource.COLOR_SAMPLERS_RESOURCE_OBSOLETE: 1038 Resource.ICC_PROFILE: 1039 Resource.SPOT_HALFTONE: 1043 Resource.JUMP_TO_XPEP: 1052 Resource.EXIF_DATA_1: 1058 Resource.EXIF_DATA_3: 1059 Resource.XMP_METADATA: 1060 Resource.CAPTION_DIGEST: 1061 Resource.ALTERNATE_DUOTONE_COLORS: 1066 Resource.ALTERNATE_SPOT_COLORS: 1067 Resource.HDR_TONING_INFO: 1070 Resource.PRINT_INFO_CS2: 1071 Resource.COLOR_SAMPLERS_RESOURCE: 1073 Resource.DISPLAY_INFO: 1077 Resource.MAC_NSPRINTINFO: 1084 Resource.WINDOWS_DEVMODE: 1085 Resource.PATH_INFO_N: 2000-2999 Resource.PLUGIN_RESOURCES_N: 4000-4999 Resource.IMAGE_READY_VARIABLES: 7000 Resource.IMAGE_READY_DATA_SETS: 7001 Resource.IMAGE_READY_DEFAULT_SELECTED_STATE: 7002 Resource.IMAGE_READY_7_ROLLOVER_EXPANDED_STATE: 7003 Resource.IMAGE_READY_ROLLOVER_EXPANDED_STATE: 7004 Resource.IMAGE_READY_SAVE_LAYER_SETTINGS: 7005 Resource.IMAGE_READY_VERSION: 7006 Resource.LIGHTROOM_WORKFLOW: 8000 ImageResources class psd_tools.psd.image_resources.ImageResources(items=NOTHING) Image resources section of the PSD file. Dict of ImageResource. get_data(key, default=None) Get data from the image resources. Shortcut for the following: if key in image_resources: value = tagged_blocks[key].data classmethod new(**kwargs) Create a new default image resouces. Returns ImageResources ImageResource class psd_tools.psd.image_resources.ImageResource(signature: bytes = b'8BIM', key: int = 1000, name: str = '', data: bytes = b'') Image resource block. signature Binary signature, always b'8BIM'. key Unique identifier for the resource. See Resource. name data The resource data. AlphaIdentifiers class psd_tools.psd.image_resources.AlphaIdentifiers(items=NOTHING) List of alpha identifiers. AlphaNamesPascal class psd_tools.psd.image_resources.AlphaNamesPascal(items=NOTHING) List of alpha names. AlphaNamesUnicode class psd_tools.psd.image_resources.AlphaNamesUnicode(items=NOTHING) List of alpha names. Byte class psd_tools.psd.image_resources.Byte(value=0) Byte element. GridGuidesInfo class psd_tools.psd.image_resources.GridGuidesInfo(version: int = 1, horizontal: int = 0, vertical: int = 0, data=NOTHING) Grid and guides info structure. HalftoneScreens class psd_tools.psd.image_resources.HalftoneScreens(items=NOTHING) Halftone screens. HalftoneScreen class psd_tools.psd.image_resources.HalftoneScreen(freq: int = 0, unit: int = 0, angle: int = 0, shape: int = 0, use_accurate: bool = False, use_printer: bool = False) Halftone screen. freq unit angle shape use_accurate use_printer Integer class psd_tools.psd.image_resources.Integer(value=0) Integer element. LayerGroupEnabledIDs class psd_tools.psd.image_resources.LayerGroupEnabledIDs(items=NOTHING) Layer group enabled ids. LayerGroupInfo class psd_tools.psd.image_resources.LayerGroupInfo(items=NOTHING) Layer group info list. LayerSelectionIDs class psd_tools.psd.image_resources.LayerSelectionIDs(items=NOTHING) Layer selection ids. ShortInteger class psd_tools.psd.image_resources.ShortInteger(value=0) Short integer element. PascalString class psd_tools.psd.image_resources.PascalString(value=None) Pascal string element. PixelAspectRatio class psd_tools.psd.image_resources.PixelAspectRatio(value=0.0, version: int = 1) Pixel aspect ratio. PrintFlags class psd_tools.psd.image_resources.PrintFlags(labels: bool = False, crop_marks: bool = False, colorbars: bool = False, registration_marks: bool = False, negative: bool = False, flip: bool = False, interpolate: bool = False, caption: bool = False, print_flags=None) Print flags. PrintFlagsInfo class psd_tools.psd.image_resources.PrintFlagsInfo(version: int = 0, center_crop: int = 0, bleed_width_value: int = 0, bleed_width_scale: int = 0) Print flags info structure. version center_crop bleed_width_value bleed_width_scale PrintScale class psd_tools.psd.image_resources.PrintScale(style=PrintScaleStyle.CENTERED, x: float = 0.0, y: float = 0.0, scale: float = 0.0) Print scale structure. style x y scale ResoulutionInfo class psd_tools.psd.image_resources.ResoulutionInfo(horizontal: int = 0, horizontal_unit: int = 0, width_unit: int = 0, vertical: int = 0, vertical_unit: int = 0, height_unit: int = 0) Resoulution info structure. horizontal horizontal_unit width_unit vertical vertical_unit height_unit Slices class psd_tools.psd.image_resources.Slices(version: int = 0, data=None) Slices resource. version data SlicesV6 class psd_tools.psd.image_resources.SlicesV6(bbox=NOTHING, name: str = '', items=NOTHING) Slices resource version 6. bbox name items SliceV6 class psd_tools.psd.image_resources.SliceV6(slice_id: int = 0, group_id: int = 0, origin: int = 0, associated_id=None, name: str = '', slice_type: int = 0, bbox=NOTHING, url: str = '', target: str = '', message: str = '', alt_tag: str = '', cell_is_html: bool = False, cell_text: str = '', horizontal_align: int = 0, vertical_align: int = 0, alpha: int = 0, red: int = 0, green: int = 0, blue: int = 0, data=None) Slice element for version 6. slice_id group_id origin associated_id name slice_type bbox url target message alt_tag cell_is_html cell_text horizontal vertical alpha red green blue data ThumbnailResource class psd_tools.psd.image_resources.ThumbnailResource(fmt: int = 0, width: int = 0, height: int = 0, row: int = 0, total_size: int = 0, bits: int = 0, planes: int = 0, data: bytes = b'') Thumbnail resource structure. fmt width height row total_size size bits planes data ThumbnailResourceV4 class psd_tools.psd.image_resources.ThumbnailResourceV4(fmt: int = 0, width: int = 0, height: int = 0, row: int = 0, total_size: int = 0, bits: int = 0, planes: int = 0, data: bytes = b'') TransferFunctions class psd_tools.psd.image_resources.TransferFunctions(items=NOTHING) Transfer functions. TransferFunction class psd_tools.psd.image_resources.TransferFunction(curve=NOTHING, override: bool = False) Transfer function URLList class psd_tools.psd.image_resources.URLList(items=NOTHING) URL list structure. URLItem class psd_tools.psd.image_resources.URLItem(number: int = 0, id: int = 0, name: str = '') URL item. number id name VersionInfo class psd_tools.psd.image_resources.VersionInfo(version: int = 1, has_composite: bool = False, writer: str = '', reader: str = '', file_version: int = 1) Version info structure. version has_composite writer reader file_version psd_tools.psd.layer_and_mask Layer and mask data structure. LayerAndMaskInformation class psd_tools.psd.layer_and_mask.LayerAndMaskInformation(layer_info=None, global_layer_mask_info=None, tagged_blocks=None) Layer and mask information section. layer_info See LayerInfo. global_layer_mask_info See GlobalLayerMaskInfo. tagged_blocks See TaggedBlocks. LayerInfo class psd_tools.psd.layer_and_mask.LayerInfo(layer_count: int = 0, layer_records=None, channel_image_data=None) High-level organization of the layer information. layer_count Layer count. If it is a negative number, its absolute value is the number of layers and the first alpha channel contains the transparency data for the merged result. layer_records Information about each layer. See LayerRecords. channel_image_data Channel image data. See ChannelImageData. GlobalLayerMaskInfo class psd_tools.psd.layer_and_mask.GlobalLayerMaskInfo(overlay_color=None, opacity: int = 0, kind=GlobalLayerMaskKind.PER_LAYER) Global mask information. overlay_color Overlay color space (undocumented) and color components. opacity Opacity. 0 = transparent, 100 = opaque. kind Kind. 0 = Color selected--i.e. inverted; 1 = Color protected; 128 = use value stored per layer. This value is preferred. The others are for backward compatibility with beta versions. LayerRecords class psd_tools.psd.layer_and_mask.LayerRecords(items=NOTHING) List of layer records. See LayerRecord. LayerRecord class psd_tools.psd.layer_and_mask.LayerRecord(top: int = 0, left: int = 0, bottom: int = 0, right: int = 0, channel_info: list[ChannelInfo] = NOTHING, signature: bytes = b'8BIM', blend_mode=BlendMode.NORMAL, opacity: int = 255, clipping=Clipping.BASE, flags=NOTHING, mask_data=None, blending_ranges=NOTHING, name: str = '', tagged_blocks: TaggedBlocks = NOTHING) Layer record. top Top position. left Left position. bottom Bottom position. right Right position. channel_info List of ChannelInfo. signature Blend mode signature b'8BIM'. blend_mode Blend mode key. See BlendMode. opacity Opacity, 0 = transparent, 255 = opaque. clipping Clipping, 0 = base, 1 = non-base. See Clipping. flags See LayerFlags. mask_data MaskData or None. blending_ranges See LayerBlendingRanges. name Layer name. tagged_blocks See TaggedBlocks. property channel_sizes List of channel sizes: [(width, height)]. property height Height of the layer. property width Width of the layer. LayerFlags class psd_tools.psd.layer_and_mask.LayerFlags(transparency_protected: bool = False, visible: bool = True, obsolete: bool = False, photoshop_v5_later: bool = True, pixel_data_irrelevant: bool = False, undocumented_1: bool = False, undocumented_2: bool = False, undocumented_3: bool = False) Layer flags. Note there are undocumented flags. Maybe photoshop version. transparency_protected visible pixel_data_irrelevant LayerBlendingRanges class psd_tools.psd.layer_and_mask.LayerBlendingRanges(composite_ranges=NOTHING, channel_ranges=NOTHING) Layer blending ranges. All ranges contain 2 black values followed by 2 white values. composite_ranges List of composite gray blend source and destination ranges. channel_ranges List of channel source and destination ranges. MaskData class psd_tools.psd.layer_and_mask.MaskData(top: int = 0, left: int = 0, bottom: int = 0, right: int = 0, background_color: int = 0, flags=NOTHING, parameters=None, real_flags=None, real_background_color=None, real_top=None, real_left=None, real_bottom=None, real_right=None) Mask data. Real user mask is a final composite mask of vector and pixel masks. top Top position. left Left position. bottom Bottom position. right Right position. background_color Default color. 0 or 255. flags See MaskFlags. parameters MaskParameters or None. real_flags Real user mask flags. See MaskFlags. real_background_color Real user mask background. 0 or 255. real_top Top position of real user mask. real_left Left position of real user mask. real_bottom Bottom position of real user mask. real_right Right position of real user mask. property height Height of the mask. property real_height Height of real user mask. property real_width Width of real user mask. property width Width of the mask. MaskFlags class psd_tools.psd.layer_and_mask.MaskFlags(pos_relative_to_layer: bool = False, mask_disabled: bool = False, invert_mask: bool = False, user_mask_from_render: bool = False, parameters_applied: bool = False, undocumented_1: bool = False, undocumented_2: bool = False, undocumented_3: bool = False) Mask flags. pos_relative_to_layer Position relative to layer. mask_disabled Layer mask disabled. invert_mask Invert layer mask when blending (Obsolete). user_mask_from_render The user mask actually came from rendering other data. parameters_applied The user and/or vector masks have parameters applied to them. MaskParameters class psd_tools.psd.layer_and_mask.MaskParameters(user_mask_density=None, user_mask_feather=None, vector_mask_density=None, vector_mask_feather=None) Mask parameters. user_mask_density user_mask_feather vector_mask_density vector_mask_feather ChannelInfo class psd_tools.psd.layer_and_mask.ChannelInfo(id=ChannelID.CHANNEL_0, length: int = 0) Channel information. id Channel ID: 0 = red, 1 = green, etc.; -1 = transparency mask; -2 = user supplied layer mask, -3 real user supplied layer mask (when both a user mask and a vector mask are present). See ChannelID. length Length of the corresponding channel data. ChannelImageData class psd_tools.psd.layer_and_mask.ChannelImageData(items=NOTHING) List of channel data list. This size of this list corresponds to the size of LayerRecords. Each item corresponds to the channels of each layer. See ChannelDataList. ChannelDataList class psd_tools.psd.layer_and_mask.ChannelDataList(items=NOTHING) List of channel image data, corresponding to each color or alpha. See ChannelData. ChannelData class psd_tools.psd.layer_and_mask.ChannelData(compression=Compression.RAW, data: bytes = b'') Channel data. compression Compression type. See Compression. data Data. get_data(width, height, depth, version=1) Get decompressed channel data. Parameters • width -- width. • height -- height. • depth -- bit depth of the pixel. • version -- psd file version. Return type bytes set_data(data, width, height, depth, version=1) Set raw channel data and compress to store. Parameters • data -- raw data bytes to write. • compression -- compression type, see Compression. • width -- width. • height -- height. • depth -- bit depth of the pixel. • version -- psd file version. psd_tools.psd.linked_layer Linked layer structure. LinkedLayers class psd_tools.psd.linked_layer.LinkedLayers(items=NOTHING) List of LinkedLayer structure. See LinkedLayer. LinkedLayer class psd_tools.psd.linked_layer.LinkedLayer(kind=LinkedLayerType.ALIAS, version=1, uuid: str = '', filename: str = '', filetype: bytes = b'\x00\x00\x00\x00', creator: bytes = b'\x00\x00\x00\x00', filesize=None, open_file=None, linked_file=None, timestamp=None, data=None, child_id=None, mod_time=None, lock_state=None) LinkedLayer structure. kind version uuid filename filetype creator filesize open_file linked_file timestamp data child_id mod_time lock_state psd_tools.psd.patterns Patterns structure. Patterns class psd_tools.psd.patterns.Patterns(items=NOTHING) List of Pattern structure. See Pattern. Pattern class psd_tools.psd.patterns.Pattern(version: int = 1, image_mode=ColorMode.RGB, point=None, name: str = '', pattern_id: str = '', color_table=None, data=None) Pattern structure. version image_mode See ColorMode point Size in tuple. name str name of the pattern. pattern_id ID of this pattern. color_table Color table if the mode is INDEXED. data See VirtualMemoryArrayList VirtualMemoryArrayList class psd_tools.psd.patterns.VirtualMemoryArrayList(version: int = 3, rectangle=None, channels=None) VirtualMemoryArrayList structure. Container of channels. version rectangle Tuple of int channels List of VirtualMemoryArray VirtualMemoryArray class psd_tools.psd.patterns.VirtualMemoryArray(is_written=0, depth=None, rectangle=None, pixel_depth=None, compression=Compression.RAW, data=b'') VirtualMemoryArrayList structure, corresponding to each channel. is_written depth rectangle pixel_depth compression data get_data() Get decompressed bytes. set_data(size, data, depth, compression=0) Set bytes. psd_tools.psd.tagged_blocks Tagged block data structure. Todo Support the following tagged blocks: Tag.PATTERN_DATA, Tag.TYPE_TOOL_INFO, Tag.LAYER, Tag.ALPHA TaggedBlocks class psd_tools.psd.tagged_blocks.TaggedBlocks(items=NOTHING) Dict of tagged block items. See Tag for available keys. Example: from psd_tools.constants import Tag # Iterate over fields for key in tagged_blocks: print(key) # Get a field value = tagged_blocks.get_data(Tag.TYPE_TOOL_OBJECT_SETTING) TaggedBlock class psd_tools.psd.tagged_blocks.TaggedBlock(signature=b'8BIM', key=b'', data=b'') Layer tagged block with extra info. key 4-character code. See Tag data Data. Annotations class psd_tools.psd.tagged_blocks.Annotations(items=NOTHING, major_version: int = 2, minor_version: int = 1) List of Annotation, see :py:class: .Annotation. major_version minor_version Annotation class psd_tools.psd.tagged_blocks.Annotation(kind: bytes = b'txtA', is_open: int = 0, flags: int = 0, optional_blocks: int = 1, icon_location=NOTHING, popup_location=NOTHING, color=NOTHING, author: str = '', name: str = '', mod_date: str = '', marker: bytes = b'txtC', data: bytes = b'') Annotation structure. kind is_open Bytes class psd_tools.psd.tagged_blocks.Bytes(value: bytes = b'\x00\x00\x00\x00') Bytes structure. value ChannelBlendingRestrictionsSetting class psd_tools.psd.tagged_blocks.ChannelBlendingRestrictionsSetting(items=NOTHING) ChannelBlendingRestrictionsSetting structure. List of restricted channel numbers (int). FilterMask class psd_tools.psd.tagged_blocks.FilterMask(color=None, opacity: int = 0) FilterMask structure. color opacity MetadataSettings class psd_tools.psd.tagged_blocks.MetadataSettings(items=NOTHING) MetadataSettings structure. MetadataSetting class psd_tools.psd.tagged_blocks.MetadataSetting(signature: bytes = b'8BIM', key: bytes = b'', copy_on_sheet: bool = False, data: bytes = b'') MetadataSetting structure. PixelSourceData2 class psd_tools.psd.tagged_blocks.PixelSourceData2(items=NOTHING) PixelSourceData2 structure. PlacedLayerData class psd_tools.psd.tagged_blocks.PlacedLayerData(kind: bytes = b'plcL', version: int = 3, uuid: bytes = b'', page: int = 0, total_pages: int = 0, anti_alias: int = 0, layer_type=PlacedLayerType.UNKNOWN, transform: tuple = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), warp=None) PlacedLayerData structure. ProtectedSetting class psd_tools.psd.tagged_blocks.ProtectedSetting(value=0) ProtectedSetting structure. ReferencePoint class psd_tools.psd.tagged_blocks.ReferencePoint(items=NOTHING) ReferencePoint structure. SectionDividerSetting class psd_tools.psd.tagged_blocks.SectionDividerSetting(kind=SectionDivider.OTHER, signature=None, blend_mode=None, sub_type=None) SectionDividerSetting structure. kind blend_mode sub_type SheetColorSetting class psd_tools.psd.tagged_blocks.SheetColorSetting(value=SheetColorType.NO_COLOR) SheetColorSetting value. This setting represents color label in the layers panel in Photoshop UI. value SmartObjectLayerData class psd_tools.psd.tagged_blocks.SmartObjectLayerData(kind: bytes = b'soLD', version: int = 5, data: DescriptorBlock = None) VersionedDescriptorBlock structure. kind version data TypeToolObjectSetting class psd_tools.psd.tagged_blocks.TypeToolObjectSetting(version: int = 1, transform: tuple = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), text_version: int = 1, text_data: DescriptorBlock = None, warp_version: int = 1, warp: DescriptorBlock = None, left: int = 0, top: int = 0, right: int = 0, bottom: int = 0) TypeToolObjectSetting structure. version transform Tuple of affine transform parameters (xx, xy, yx, yy, tx, ty). text_version text_data warp_version warp left top right bottom UserMask class psd_tools.psd.tagged_blocks.UserMask(color=None, opacity: int = 0, flag: int = 128) UserMask structure. color opacity flag psd_tools.psd.vector Vector mask, path, and stroke structure. Path class psd_tools.psd.vector.Path(items=NOTHING) List-like Path structure. Elements are either PathFillRule, InitialFillRule, ClipboardRecord, ClosedPath, or OpenPath. Subpath class psd_tools.psd.vector.Subpath(items=NOTHING, operation: int = 1, unknown1: int = 1, unknown2: int = 0, index: int = 0, unknown3: bytes = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') Subpath element. This is a list of Knot objects. NOTE: There are undocumented data associated with this structure. operation int value indicating how multiple subpath should be combined: 1: Or (union), 2: Not-Or, 3: And (intersect), 0: Xor (exclude) The first path element is applied to the background surface. Intersection does not have strokes. index int index that specifies corresponding origination object. is_closed() Returns whether if the path is closed or not. Returns bool. Knot class psd_tools.psd.vector.Knot(preceding: tuple = (0.0, 0.0), anchor: tuple = (0.0, 0.0), leaving: tuple = (0.0, 0.0)) Knot element consisting of 3 control points for Bezier curves. preceding (y, x) tuple of preceding control point in relative coordinates. anchor (y, x) tuple of anchor point in relative coordinates. leaving (y, x) tuple of leaving control point in relative coordinates. ClipboardRecord class psd_tools.psd.vector.ClipboardRecord(top: int = 0, left: int = 0, bottom: int = 0, right: int = 0, resolution: int = 0) Clipboard record. top Top position in int left Left position in int bottom Bottom position in int right Right position in int resolution Resolution in int PathFillRule class psd_tools.psd.vector.PathFillRule Path fill rule record, empty. InitialFillRule class psd_tools.psd.vector.InitialFillRule(value=0) Initial fill rule record. rule A value of 1 means that the fill starts with all pixels. The value will be either 0 or 1. VectorMaskSetting class psd_tools.psd.vector.VectorMaskSetting(version: int = 3, flags: int = 0, path=None) VectorMaskSetting structure. version path List of Subpath objects. property disable Flag to indicate that the vector mask is disabled. property invert Flag to indicate that the vector mask is inverted. property not_link Flag to indicate that the vector mask is not linked. VectorStrokeContentSetting class psd_tools.psd.vector.VectorStrokeContentSetting(items=NOTHING, name: str = '', classID=b'null', key: bytes = b'\x00\x00\x00\x00', version: int = 1) Dict-like Descriptor-based structure. See Descriptor. key version psd_tools.terminology Constants for descriptor. This file is automaticaly generated by tools/extract_terminology.py Klass class psd_tools.terminology.Klass(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Klass definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html Action = b'Actn' ActionSet = b'ASet' Adjustment = b'Adjs' AdjustmentLayer = b'AdjL' AirbrushTool = b'AbTl' AlphaChannelOptions = b'AChl' AntiAliasedPICTAcquire = b'AntA' Application = b'capp' Arrowhead = b'cArw' ArtHistoryBrushTool = b'ABTl' Assert = b'Asrt' AssumedProfile = b'AssP' BMPFormat = b'BMPF' BackLight = b'BakL' BackgroundEraserTool = b'SETl' BackgroundLayer = b'BckL' BevelEmboss = b'ebbl' BitmapMode = b'BtmM' BlendRange = b'Blnd' BlurTool = b'BlTl' BookColor = b'BkCl' BrightnessContrast = b'BrgC' Brush = b'Brsh' BurnInTool = b'BrTl' CMYKColor = b'CMYC' CMYKColorMode = b'CMYM' CMYKSetup = b'CMYS' CachePrefs = b'CchP' Calculation = b'Clcl' Channel = b'Chnl' ChannelMatrix = b'ChMx' ChannelMixer = b'ChnM' ChromeFX = b'ChFX' CineonFormat = b'SDPX' ClippingInfo = b'Clpo' ClippingPath = b'ClpP' CloneStampTool = b'ClTl' Color = b'Clr ' ColorBalance = b'ClrB' ColorCast = b'ColC' ColorCorrection = b'ClrC' ColorPickerPrefs = b'Clrk' ColorSampler = b'ClSm' ColorStop = b'Clrt' Command = b'Cmnd' Contour = b'FxSc' CurvePoint = b'CrPt' Curves = b'Crvs' CurvesAdjustment = b'CrvA' CustomPalette = b'Cstl' CustomPhosphors = b'CstP' CustomWhitePoint = b'CstW' DicomFormat = b'Dicm' DisplayPrefs = b'DspP' Document = b'Dcmn' DodgeTool = b'DdTl' DropShadow = b'DrSh' DuotoneInk = b'DtnI' DuotoneMode = b'DtnM' EPSGenericFormat = b'EPSG' EPSPICTPreview = b'EPSC' EPSTIFFPreview = b'EPST' EXRf = b'EXRf' Element = b'Elmn' Ellipse = b'Elps' EraserTool = b'ErTl' Export = b'Expr' FileInfo = b'FlIn' FileSavePrefs = b'FlSv' FillFlash = b'FilF' FlashPixFormat = b'FlsP' FontDesignAxes = b'FntD' Format = b'Fmt ' FrameFX = b'FrFX' GIF89aExport = b'GF89' GIFFormat = b'GFFr' GeneralPrefs = b'GnrP' GlobalAngle = b'gblA' Gradient = b'Grdn' GradientFill = b'Grdf' GradientMap = b'GdMp' GradientTool = b'GrTl' GraySetup = b'GrSt' Grayscale = b'Grsc' GrayscaleMode = b'Grys' Guide = b'Gd ' GuidesPrefs = b'GdPr' HSBColor = b'HSBC' HSBColorMode = b'HSBM' HalftoneScreen = b'HlfS' HalftoneSpec = b'Hlfp' HistoryBrushTool = b'HBTl' HistoryPrefs = b'CHsP' HistoryState = b'HstS' HueSatAdjustment = b'HStA' HueSatAdjustmentV2 = b'Hst2' HueSaturation = b'HStr' IFFFormat = b'IFFF' IllustratorPathsExport = b'IlsP' ImagePoint = b'ImgP' Import = b'Impr' IndexedColorMode = b'IndC' InkTransfer = b'InkT' InnerGlow = b'IrGl' InnerShadow = b'IrSh' InterfaceColor = b'IClr' Invert = b'Invr' JPEGFormat = b'JPEG' LabColor = b'LbCl' LabColorMode = b'LbCM' Layer = b'Lyr ' LayerEffects = b'Lefx' LayerFXVisible = b'lfxv' Levels = b'Lvls' LevelsAdjustment = b'LvlA' LightSource = b'LghS' Line = b'Ln ' MacPaintFormat = b'McPn' MagicEraserTool = b'MgEr' MagicPoint = b'Mgcp' Mask = b'Msk ' MenuItem = b'Mn ' Mode = b'Md ' MultichannelMode = b'MltC' Null = b'null' ObsoleteTextLayer = b'TxLy' Offset = b'Ofst' Opacity = b'Opac' OuterGlow = b'OrGl' PDFGenericFormat = b'PDFG' PICTFileFormat = b'PICF' PICTResourceFormat = b'PICR' PNGFormat = b'PNGF' PageSetup = b'PgSt' PaintbrushTool = b'PbTl' Path = b'Path' PathComponent = b'PaCm' PathPoint = b'Pthp' Pattern = b'PttR' PatternStampTool = b'PaTl' PencilTool = b'PcTl' Photoshop20Format = b'Pht2' Photoshop35Format = b'Pht3' PhotoshopDCS2Format = b'PhD2' PhotoshopDCSFormat = b'PhD1' PhotoshopEPSFormat = b'PhtE' PhotoshopPDFFormat = b'PhtP' Pixel = b'Pxel' PixelPaintFormat = b'PxlP' PluginPrefs = b'PlgP' Point = b'Pnt ' Point16 = b'Pnt1' Polygon = b'Plgn' Posterize = b'Pstr' Preferences = b'GnrP' ProfileSetup = b'PrfS' Property = b'Prpr' RGBColor = b'RGBC' RGBColorMode = b'RGBM' RGBSetup = b'RGBt' Range = b'Rang' RawFormat = b'Rw ' Rect16 = b'Rct1' Rectangle = b'Rctn' SaturationTool = b'SrTl' ScitexCTFormat = b'Sctx' Selection = b'csel' SelectiveColor = b'SlcC' ShapingCurve = b'ShpC' SharpenTool = b'ShTl' SingleColumn = b'Sngc' SingleRow = b'Sngr' SmudgeTool = b'SmTl' Snapshot = b'SnpS' SolidFill = b'SoFi' SpotColorChannel = b'SCch' Style = b'StyC' SubPath = b'Sbpl' TIFFFormat = b'TIFF' TargaFormat = b'TrgF' TextLayer = b'TxLr' TextStyle = b'TxtS' TextStyleRange = b'Txtt' Threshold = b'Thrs' Tool = b'Tool' TransferPoint = b'DtnP' TransferSpec = b'Trfp' TransparencyPrefs = b'TrnP' TransparencyStop = b'TrnS' UnitsPrefs = b'UntP' UnspecifiedColor = b'UnsC' Version = b'Vrsn' WebdavPrefs = b'Wdbv' XYYColor = b'XYYC' Enum class psd_tools.terminology.Enum(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Enum definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html A = b'A ' ADSBottoms = b'AdBt' ADSCentersH = b'AdCH' ADSCentersV = b'AdCV' ADSHorizontal = b'AdHr' ADSLefts = b'AdLf' ADSRights = b'AdRg' ADSTops = b'AdTp' ADSVertical = b'AdVr' ASCII = b'ASCI' AboutApp = b'AbAp' AbsColorimetric = b'AClr' Absolute = b'Absl' ActualPixels = b'ActP' Adaptive = b'Adpt' Add = b'Add ' AdjustmentOptions = b'AdjO' AdobeRGB1998 = b'SMPT' AirbrushEraser = b'Arbs' All = b'Al ' Amiga = b'Amga' AmountHigh = b'amHi' AmountLow = b'amLo' AmountMedium = b'amMd' Angle = b'Angl' AntiAliasCrisp = b'AnCr' AntiAliasHigh = b'AnHi' AntiAliasLow = b'AnLo' AntiAliasMedium = b'AnMd' AntiAliasNone = b'Anno' AntiAliasSmooth = b'AnSm' AntiAliasStrong = b'AnSt' Any = b'Any ' AppleRGB = b'AppR' ApplyImage = b'AplI' AroundCenter = b'ArnC' Arrange = b'Arng' Ask = b'Ask ' AskWhenOpening = b'AskW' B = b'B ' Back = b'Back' Background = b'Bckg' BackgroundColor = b'BckC' Backward = b'Bckw' Behind = b'Bhnd' Best = b'Bst ' Better = b'Dthb' Bicubic = b'Bcbc' Bilinear = b'Blnr' Binary = b'Bnry' BitDepth1 = b'BD1 ' BitDepth16 = b'BD16' BitDepth24 = b'BD24' BitDepth32 = b'BD32' BitDepth4 = b'BD4 ' BitDepth8 = b'BD8 ' BitDepthA1R5G5B5 = b'1565' BitDepthA4R4G4B4 = b'4444' BitDepthR5G6B5 = b'x565' BitDepthX4R4G4B4 = b'x444' BitDepthX8R8G8B8 = b'x888' Bitmap = b'Btmp' Black = b'Blck' BlackAndWhite = b'BanW' BlackBody = b'BlcB' Blacks = b'Blks' Blast = b'Blst' BlockEraser = b'Blk ' Blocks = b'Blks' Blue = b'Bl ' Blues = b'Bls ' Bottom = b'Bttm' BrushDarkRough = b'BrDR' BrushLightRough = b'BrsL' BrushSimple = b'BrSm' BrushSize = b'BrsS' BrushSparkle = b'BrSp' BrushWideBlurry = b'BrbW' BrushWideSharp = b'BrsW' BrushesAppend = b'BrsA' BrushesDefine = b'BrsD' BrushesDelete = b'Brsf' BrushesLoad = b'Brsd' BrushesNew = b'BrsN' BrushesOptions = b'BrsO' BrushesReset = b'BrsR' BrushesSave = b'Brsv' Builtin = b'Bltn' BurnInH = b'BrnH' BurnInM = b'BrnM' BurnInS = b'BrnS' ButtonMode = b'BtnM' CIERGB = b'CRGB' CMYK = b'CMYK' CMYK64 = b'CMSF' CMYKColor = b'ECMY' Calculations = b'Clcl' Cascade = b'Cscd' Center = b'Cntr' CenterGlow = b'SrcC' CenteredFrame = b'CtrF' ChannelOptions = b'ChnO' ChannelsPaletteOptions = b'ChnP' CheckerboardLarge = b'ChcL' CheckerboardMedium = b'ChcM' CheckerboardNone = b'ChcN' CheckerboardSmall = b'ChcS' Clear = b'Clar' ClearGuides = b'ClrG' Clipboard = b'Clpb' ClippingPath = b'ClpP' CloseAll = b'ClsA' CoarseDots = b'CrsD' Color = b'Clr ' ColorBurn = b'CBrn' ColorDodge = b'CDdg' ColorMatch = b'ClMt' ColorNoise = b'ClNs' Colorimetric = b'Clrm' Composite = b'Cmps' ContourCustom = b'sp06' ContourDouble = b'sp04' ContourGaussian = b'sp02' ContourLinear = b'sp01' ContourSingle = b'sp03' ContourTriple = b'sp05' ConvertToCMYK = b'CnvC' ConvertToGray = b'CnvG' ConvertToLab = b'CnvL' ConvertToRGB = b'CnvR' CreateDuplicate = b'CrtD' CreateInterpolation = b'CrtI' Cross = b'Crs ' CurrentLayer = b'CrrL' Custom = b'Cst ' CustomPattern = b'Cstm' CustomStops = b'CstS' Cyan = b'Cyn ' Cyans = b'Cyns' Dark = b'Drk ' Darken = b'Drkn' DarkenOnly = b'DrkO' DashedLines = b'DshL' Desaturate = b'Dstt' Diamond = b'Dmnd' Difference = b'Dfrn' Diffusion = b'Dfsn' DiffusionDither = b'DfnD' DisplayCursorsPreferences = b'DspC' Dissolve = b'Dslv' Distort = b'Dstr' DodgeH = b'DdgH' DodgeM = b'DdgM' DodgeS = b'DdgS' Dots = b'Dts ' Draft = b'Drft' Duotone = b'Dtn ' EBUITU = b'EBT ' EdgeGlow = b'SrcE' EliminateEvenFields = b'ElmE' EliminateOddFields = b'ElmO' Ellipse = b'Elps' Emboss = b'Embs' Exact = b'Exct' Exclusion = b'Xclu' FPXCompressLossyJPEG = b'FxJP' FPXCompressNone = b'FxNo' Faster = b'Dthf' File = b'Fle ' FileInfo = b'FlIn' FillBack = b'FlBc' FillFore = b'FlFr' FillInverse = b'FlIn' FillSame = b'FlSm' FineDots = b'FnDt' First = b'Frst' FirstIdle = b'FrId' FitOnScreen = b'FtOn' ForegroundColor = b'FrgC' Forward = b'Frwr' FreeTransform = b'FrTr' Front = b'Frnt' FullDocument = b'FllD' FullSize = b'FlSz' GIFColorFileColorTable = b'GFCT' GIFColorFileColors = b'GFCF' GIFColorFileMicrosoftPalette = b'GFMS' GIFPaletteAdaptive = b'GFPA' GIFPaletteExact = b'GFPE' GIFPaletteOther = b'GFPO' GIFPaletteSystem = b'GFPS' GIFRequiredColorSpaceIndexed = b'GFCI' GIFRequiredColorSpaceRGB = b'GFRG' GIFRowOrderInterlaced = b'GFIN' GIFRowOrderNormal = b'GFNI' GaussianDistribution = b'Gsn ' GeneralPreferences = b'GnrP' Good = b'Gd ' GradientFill = b'GrFl' GrainClumped = b'GrnC' GrainContrasty = b'GrCn' GrainEnlarged = b'GrnE' GrainHorizontal = b'GrnH' GrainRegular = b'GrnR' GrainSoft = b'GrSf' GrainSpeckle = b'GrSp' GrainSprinkles = b'GrSr' GrainStippled = b'GrSt' GrainVertical = b'GrnV' GrainyDots = b'GrnD' Graphics = b'Grp ' Gray = b'Gry ' Gray16 = b'GryX' Gray18 = b'Gr18' Gray22 = b'Gr22' Gray50 = b'Gr50' GrayScale = b'Gryc' Grayscale = b'Grys' Green = b'Grn ' Greens = b'Grns' GuidesGridPreferences = b'GudG' HDTV = b'HDTV' HSBColor = b'HSBl' HSLColor = b'HSLC' HalftoneFile = b'HlfF' HalftoneScreen = b'HlfS' HardLight = b'HrdL' Heavy = b'Hvy ' HideAll = b'HdAl' HideSelection = b'HdSl' High = b'High' HighQuality = b'Hgh ' Highlights = b'Hghl' Histogram = b'Hstg' History = b'Hsty' HistoryPaletteOptions = b'HstO' HistoryPreferences = b'HstP' Horizontal = b'Hrzn' HorizontalOnly = b'HrzO' Hue = b'H ' IBMPC = b'IBMP' ICC = b'ICC ' Icon = b'Icn ' IdleVM = b'IdVM' Ignore = b'Ignr' Image = b'Img ' ImageCachePreferences = b'ImgP' IndexedColor = b'Indl' InfoPaletteOptions = b'InfP' InfoPaletteToggleSamplers = b'InfT' InnerBevel = b'InrB' InsetFrame = b'InsF' Inside = b'Insd' JPEG = b'JPEG' JustifyAll = b'JstA' JustifyFull = b'JstF' KeepProfile = b'KPro' KeyboardPreferences = b'KybP' Lab = b'Lab ' Lab48 = b'LbCF' LabColor = b'LbCl' Large = b'Lrg ' Last = b'Lst ' LastFilter = b'LstF' LayerOptions = b'LyrO' LayersPaletteOptions = b'LyrP' Left = b'Left' Left_PLUGIN = b'Lft ' LevelBased = b'LvlB' Light = b'Lgt ' LightBlue = b'LgtB' LightDirBottom = b'LDBt' LightDirBottomLeft = b'LDBL' LightDirBottomRight = b'LDBR' LightDirLeft = b'LDLf' LightDirRight = b'LDRg' LightDirTop = b'LDTp' LightDirTopLeft = b'LDTL' LightDirTopRight = b'LDTR' LightDirectional = b'LghD' LightGray = b'LgtG' LightOmni = b'LghO' LightPosBottom = b'LPBt' LightPosBottomLeft = b'LPBL' LightPosBottomRight = b'LPBr' LightPosLeft = b'LPLf' LightPosRight = b'LPRg' LightPosTop = b'LPTp' LightPosTopLeft = b'LPTL' LightPosTopRight = b'LPTR' LightRed = b'LgtR' LightSpot = b'LghS' Lighten = b'Lghn' LightenOnly = b'LghO' Lightness = b'Lght' Line = b'Ln ' Linear = b'Lnr ' Lines = b'Lns ' Linked = b'Lnkd' LongLines = b'LngL' LongStrokes = b'LngS' Low = b'Low ' LowQuality = b'Lw ' Lower = b'Lwr ' Luminosity = b'Lmns' MacThumbnail = b'McTh' Macintosh = b'Mcnt' MacintoshSystem = b'McnS' Magenta = b'Mgnt' Magentas = b'Mgnt' Mask = b'Msk ' MaskedAreas = b'MskA' MasterAdaptive = b'MAdp' MasterPerceptual = b'MPer' MasterSelective = b'MSel' Maximum = b'Mxmm' MaximumQuality = b'Mxm ' Maya = b'Maya' Medium = b'Mdim' MediumBlue = b'MdmB' MediumDots = b'MdmD' MediumLines = b'MdmL' MediumQuality = b'Mdm ' MediumStrokes = b'MdmS' MemoryPreferences = b'MmrP' MergeChannels = b'MrgC' Merged = b'Mrgd' MergedLayers = b'Mrg2' MergedLayersOld = b'MrgL' Middle = b'Mddl' Midtones = b'Mdtn' ModeGray = b'MdGr' ModeRGB = b'MdRG' Monitor = b'Moni' MonitorSetup = b'MntS' Monotone = b'Mntn' Multi72Color = b'72CM' Multi72Gray = b'72GM' MultiNoCompositePS = b'NCmM' Multichannel = b'Mlth' Multiply = b'Mltp' NTSC = b'NTSC' NavigatorPaletteOptions = b'NvgP' NearestNeighbor = b'Nrst' NetscapeGray = b'NsGr' Neutrals = b'Ntrl' NewView = b'NwVw' Next = b'Nxt ' Nikon = b'Nkn ' Nikon105 = b'Nkn1' No = b'N ' NoCompositePS = b'NCmp' Normal = b'Nrml' NormalPath = b'NrmP' Null = b'null' OS2 = b'OS2 ' Off = b'Off ' On = b'On ' OpenAs = b'OpAs' Orange = b'Orng' OutFromCenter = b'OtFr' OutOfGamut = b'OtOf' OuterBevel = b'OtrB' OutsetFrame = b'OutF' Outside = b'Otsd' Overlay = b'Ovrl' P22EBU = b'P22B' PNGFilterAdaptive = b'PGAd' PNGFilterAverage = b'PGAv' PNGFilterNone = b'PGNo' PNGFilterPaeth = b'PGPt' PNGFilterSub = b'PGSb' PNGFilterUp = b'PGUp' PNGInterlaceAdam7 = b'PGIA' PNGInterlaceNone = b'PGIN' PagePosCentered = b'PgPC' PagePosTopLeft = b'PgTL' PageSetup = b'PgSt' PaintbrushEraser = b'Pntb' PalSecam = b'PlSc' PanaVision = b'PnVs' PathsPaletteOptions = b'PthP' Pattern = b'Ptrn' PatternDither = b'PtnD' PencilEraser = b'Pncl' Perceptual = b'Perc' Perspective = b'Prsp' PhotoshopPicker = b'Phtk' PickCMYK = b'PckC' PickGray = b'PckG' PickHSB = b'PckH' PickLab = b'PckL' PickOptions = b'PckO' PickRGB = b'PckR' PillowEmboss = b'PlEb' PixelPaintSize1 = b'PxS1' PixelPaintSize2 = b'PxS2' PixelPaintSize3 = b'PxS3' PixelPaintSize4 = b'PxS4' Place = b'Plce' PlaybackOptions = b'PbkO' PluginPicker = b'PlgP' PluginsScratchDiskPreferences = b'PlgS' PolarToRect = b'PlrR' PondRipples = b'PndR' Precise = b'Prc ' PreciseMatte = b'PrBL' PreviewBlack = b'PrvB' PreviewCMY = b'PrvN' PreviewCMYK = b'PrvC' PreviewCyan = b'Prvy' PreviewMagenta = b'PrvM' PreviewOff = b'PrvO' PreviewYellow = b'PrvY' Previous = b'Prvs' Primaries = b'Prim' PrintSize = b'PrnS' PrintingInksSetup = b'PrnI' Purple = b'Prp ' Pyramids = b'Pyrm' QCSAverage = b'Qcsa' QCSCorner0 = b'Qcs0' QCSCorner1 = b'Qcs1' QCSCorner2 = b'Qcs2' QCSCorner3 = b'Qcs3' QCSIndependent = b'Qcsi' QCSSide0 = b'Qcs4' QCSSide1 = b'Qcs5' QCSSide2 = b'Qcs6' QCSSide3 = b'Qcs7' Quadtone = b'Qdtn' QueryAlways = b'QurA' QueryAsk = b'Qurl' QueryNever = b'QurN' RGB = b'RGB ' RGB48 = b'RGBF' RGBColor = b'RGBC' Radial = b'Rdl ' Random = b'Rndm' RectToPolar = b'RctP' Red = b'Rd ' RedrawComplete = b'RdCm' Reds = b'Rds ' Reflected = b'Rflc' Relative = b'Rltv' Repeat = b'Rpt ' RepeatEdgePixels = b'RptE' RevealAll = b'RvlA' RevealSelection = b'RvlS' Revert = b'Rvrt' Right = b'Rght' Rotate = b'Rtte' RotoscopingPreferences = b'RtsP' Round = b'Rnd ' RulerCm = b'RrCm' RulerInches = b'RrIn' RulerPercent = b'RrPr' RulerPicas = b'RrPi' RulerPixels = b'RrPx' RulerPoints = b'RrPt' SMPTEC = b'SMPC' SRGB = b'SRGB' Sample3x3 = b'Smp3' Sample5x5 = b'Smp5' SamplePoint = b'SmpP' Saturate = b'Str ' Saturation = b'Strt' SaveForWeb = b'Svfw' Saved = b'Sved' SavingFilesPreferences = b'SvnF' Scale = b'Scl ' Screen = b'Scrn' ScreenCircle = b'ScrC' ScreenDot = b'ScrD' ScreenLine = b'ScrL' SelectedAreas = b'SlcA' Selection = b'Slct' Selective = b'Sele' SeparationSetup = b'SprS' SeparationTables = b'SprT' Shadows = b'Shdw' ShortLines = b'ShrL' ShortStrokes = b'ShSt' Single72Color = b'72CS' Single72Gray = b'72GS' SingleNoCompositePS = b'NCmS' Skew = b'Skew' SlopeLimitMatte = b'Slmt' Small = b'Sml ' SmartBlurModeEdgeOnly = b'SBME' SmartBlurModeNormal = b'SBMN' SmartBlurModeOverlayEdge = b'SBMO' SmartBlurQualityHigh = b'SBQH' SmartBlurQualityLow = b'SBQL' SmartBlurQualityMedium = b'SBQM' Snapshot = b'Snps' SoftLight = b'SftL' SoftMatte = b'SfBL' SolidColor = b'SClr' Spectrum = b'Spct' Spin = b'Spn ' SpotColor = b'Spot' Square = b'Sqr ' Stagger = b'Stgr' StampIn = b'In ' StampOut = b'Out ' Standard = b'Std ' StdA = b'StdA' StdB = b'StdB' StdC = b'StdC' StdE = b'StdE' StretchToFit = b'StrF' StrokeDirHorizontal = b'SDHz' StrokeDirLeftDiag = b'SDLD' StrokeDirRightDiag = b'SDRD' StrokeDirVertical = b'SDVt' StylesAppend = b'SlsA' StylesDelete = b'Slsf' StylesLoad = b'Slsd' StylesNew = b'SlsN' StylesReset = b'SlsR' StylesSave = b'Slsv' Subtract = b'Sbtr' SwatchesAppend = b'SwtA' SwatchesReplace = b'Swtp' SwatchesReset = b'SwtR' SwatchesSave = b'SwtS' SystemPicker = b'SysP' TIFF = b'TIFF' Tables = b'Tbl ' Target = b'Trgt' TargetPath = b'Trgp' TexTypeBlocks = b'TxBl' TexTypeBrick = b'TxBr' TexTypeBurlap = b'TxBu' TexTypeCanvas = b'TxCa' TexTypeFrosted = b'TxFr' TexTypeSandstone = b'TxSt' TexTypeTinyLens = b'TxTL' Threshold = b'Thrh' Thumbnail = b'Thmb' Tile = b'Tile' Tile_PLUGIN = b'Tl ' ToggleActionsPalette = b'TglA' ToggleBlackPreview = b'TgBP' ToggleBrushesPalette = b'TglB' ToggleCMYKPreview = b'TglC' ToggleCMYPreview = b'TgCM' ToggleChannelsPalette = b'Tglh' ToggleColorPalette = b'Tglc' ToggleCyanPreview = b'TgCP' ToggleDocumentPalette = b'TgDc' ToggleEdges = b'TglE' ToggleGamutWarning = b'TglG' ToggleGrid = b'TgGr' ToggleGuides = b'Tgld' ToggleHistoryPalette = b'TglH' ToggleInfoPalette = b'TglI' ToggleLayerMask = b'TglM' ToggleLayersPalette = b'Tgly' ToggleLockGuides = b'TglL' ToggleMagentaPreview = b'TgMP' ToggleNavigatorPalette = b'TglN' ToggleOptionsPalette = b'TglO' TogglePaths = b'TglP' TogglePathsPalette = b'Tglt' ToggleRGBMacPreview = b'TrMp' ToggleRGBUncompensatedPreview = b'TrUp' ToggleRGBWindowsPreview = b'TrWp' ToggleRulers = b'TglR' ToggleSnapToGrid = b'TgSn' ToggleSnapToGuides = b'TglS' ToggleStatusBar = b'Tgls' ToggleStylesPalette = b'TgSl' ToggleSwatchesPalette = b'Tglw' ToggleToolsPalette = b'TglT' ToggleYellowPreview = b'TgYP' Top = b'Top ' Transparency = b'Trsp' TransparencyGamutPreferences = b'TrnG' Transparent = b'Trns' Trinitron = b'Trnt' Tritone = b'Trtn' UIBitmap = b'UBtm' UICMYK = b'UCMY' UIDuotone = b'UDtn' UIGrayscale = b'UGry' UIIndexed = b'UInd' UILab = b'ULab' UIMultichannel = b'UMlt' UIRGB = b'URGB' Undo = b'Und ' Uniform = b'Unfm' UniformDistribution = b'Unfr' UnitsRulersPreferences = b'UntR' Upper = b'Upr ' UserStop = b'UsrS' VMPreferences = b'VMPr' Vertical = b'Vrtc' VerticalOnly = b'VrtO' Violet = b'Vlt ' WaveSine = b'WvSn' WaveSquare = b'WvSq' WaveTriangle = b'WvTr' Web = b'Web ' White = b'Wht ' Whites = b'Whts' WideGamutRGB = b'WRGB' WidePhosphors = b'Wide' WinThumbnail = b'WnTh' Wind = b'Wnd ' Windows = b'Win ' WindowsSystem = b'WndS' WorkPath = b'WrkP' Wrap = b'Wrp ' WrapAround = b'WrpA' Yellow = b'Yllw' YellowColor = b'Ylw ' Yellows = b'Ylws' Yes = b'Ys ' Zip = b'ZpEn' Zoom = b'Zm ' ZoomIn = b'ZmIn' ZoomOut = b'ZmOt' _16BitsPerPixel = b'16Bt' _1BitPerPixel = b'OnBt' _2BitsPerPixel = b'2Bts' _32BitsPerPixel = b'32Bt' _4BitsPerPixel = b'4Bts' _5000 = b'5000' _5500 = b'5500' _6500 = b'6500' _72Color = b'72Cl' _72Gray = b'72Gr' _7500 = b'7500' _8BitsPerPixel = b'EghB' _9300 = b'9300' _None = b'None' Event class psd_tools.terminology.Event(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Event definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html AccentedEdges = b'AccE' Add = b'Add ' AddNoise = b'AdNs' AddTo = b'AddT' Align = b'Algn' All = b'All ' AngledStrokes = b'AngS' ApplyImage = b'AppI' ApplyStyle = b'ASty' Assert = b'Asrt' Average = b'Avrg' BackLight = b'BacL' BasRelief = b'BsRl' Batch = b'Btch' BatchFromDroplet = b'BtcF' Blur = b'Blr ' BlurMore = b'BlrM' Border = b'Brdr' Brightness = b'BrgC' CanvasSize = b'CnvS' ChalkCharcoal = b'ChlC' ChannelMixer = b'ChnM' Charcoal = b'Chrc' Chrome = b'Chrm' Clear = b'Cler' Close = b'Cls ' Clouds = b'Clds' ColorBalance = b'ClrB' ColorCast = b'ColE' ColorHalftone = b'ClrH' ColorRange = b'ClrR' ColoredPencil = b'ClrP' ConteCrayon = b'CntC' Contract = b'Cntc' ConvertMode = b'CnvM' Copy = b'copy' CopyEffects = b'CpFX' CopyMerged = b'CpyM' CopyToLayer = b'CpTL' Craquelure = b'Crql' CreateDroplet = b'CrtD' Crop = b'Crop' Crosshatch = b'Crsh' Crystallize = b'Crst' Curves = b'Crvs' Custom = b'Cstm' Cut = b'cut ' CutToLayer = b'CtTL' Cutout = b'Ct ' DarkStrokes = b'DrkS' DeInterlace = b'Dntr' DefinePattern = b'DfnP' Defringe = b'Dfrg' Delete = b'Dlt ' Desaturate = b'Dstt' Deselect = b'Dslc' Despeckle = b'Dspc' DifferenceClouds = b'DfrC' Diffuse = b'Dfs ' DiffuseGlow = b'DfsG' DisableLayerFX = b'dlfx' Displace = b'Dspl' Distribute = b'Dstr' Draw = b'Draw' DryBrush = b'DryB' Duplicate = b'Dplc' DustAndScratches = b'DstS' Emboss = b'Embs' Equalize = b'Eqlz' Exchange = b'Exch' Expand = b'Expn' Export = b'Expr' Extrude = b'Extr' Facet = b'Fct ' Fade = b'Fade' Feather = b'Fthr' Fibers = b'Fbrs' Fill = b'Fl ' FilmGrain = b'FlmG' Filter = b'Fltr' FindEdges = b'FndE' FlattenImage = b'FltI' Flip = b'Flip' Fragment = b'Frgm' Fresco = b'Frsc' GaussianBlur = b'GsnB' Get = b'getd' Glass = b'Gls ' GlowingEdges = b'GlwE' Gradient = b'Grdn' GradientMap = b'GrMp' Grain = b'Grn ' GraphicPen = b'GraP' Group = b'GrpL' Grow = b'Grow' HSBHSL = b'HsbP' HalftoneScreen = b'HlfS' Hide = b'Hd ' HighPass = b'HghP' HueSaturation = b'HStr' ImageSize = b'ImgS' Import = b'Impr' InkOutlines = b'InkO' Intersect = b'Intr' IntersectWith = b'IntW' Inverse = b'Invs' Invert = b'Invr' LensFlare = b'LnsF' Levels = b'Lvls' LightingEffects = b'LghE' Link = b'Lnk ' Make = b'Mk ' Maximum = b'Mxm ' Median = b'Mdn ' MergeLayers = b'Mrg2' MergeLayersOld = b'MrgL' MergeSpotChannel = b'MSpt' MergeVisible = b'MrgV' Mezzotint = b'Mztn' Minimum = b'Mnm ' Mosaic = b'Msc ' Mosaic_PLUGIN = b'MscT' MotionBlur = b'MtnB' Move = b'move' NTSCColors = b'NTSC' NeonGlow = b'NGlw' Next = b'Nxt ' NotePaper = b'NtPr' Notify = b'Ntfy' Null = b'null' OceanRipple = b'OcnR' Offset = b'Ofst' Open = b'Opn ' OpenUntitled = b'OpnU' PaintDaubs = b'PntD' PaletteKnife = b'PltK' Paste = b'past' PasteEffects = b'PaFX' PasteInto = b'PstI' PasteOutside = b'PstO' Patchwork = b'Ptch' Photocopy = b'Phtc' Pinch = b'Pnch' Place = b'Plc ' Plaster = b'Plst' PlasticWrap = b'PlsW' Play = b'Ply ' Pointillize = b'Pntl' Polar = b'Plr ' PosterEdges = b'PstE' Posterize = b'Pstr' Previous = b'Prvs' Print = b'Prnt' ProfileToProfile = b'PrfT' Purge = b'Prge' Quit = b'quit' RadialBlur = b'RdlB' Rasterize = b'Rstr' RasterizeTypeSheet = b'RstT' RemoveBlackMatte = b'RmvB' RemoveLayerMask = b'RmvL' RemoveWhiteMatte = b'RmvW' Rename = b'Rnm ' ReplaceColor = b'RplC' Reset = b'Rset' Reticulation = b'Rtcl' Revert = b'Rvrt' Ripple = b'Rple' Rotate = b'Rtte' RoughPastels = b'RghP' Save = b'save' Select = b'slct' SelectiveColor = b'SlcC' Set = b'setd' Sharpen = b'Shrp' SharpenEdges = b'ShrE' SharpenMore = b'ShrM' Shear = b'Shr ' Show = b'Shw ' Similar = b'Smlr' SmartBlur = b'SmrB' Smooth = b'Smth' SmudgeStick = b'SmdS' Solarize = b'Slrz' Spatter = b'Spt ' Spherize = b'Sphr' SplitChannels = b'SplC' Sponge = b'Spng' SprayedStrokes = b'SprS' StainedGlass = b'StnG' Stamp = b'Stmp' Stop = b'Stop' Stroke = b'Strk' Subtract = b'Sbtr' SubtractFrom = b'SbtF' Sumie = b'Smie' TakeMergedSnapshot = b'TkMr' TakeSnapshot = b'TkSn' TextureFill = b'TxtF' Texturizer = b'Txtz' Threshold = b'Thrs' Tiles = b'Tls ' TornEdges = b'TrnE' TraceContour = b'TrcC' Transform = b'Trnf' Trap = b'Trap' Twirl = b'Twrl' Underpainting = b'Undr' Undo = b'undo' Ungroup = b'Ungr' Unlink = b'Unlk' UnsharpMask = b'UnsM' Variations = b'Vrtn' Wait = b'Wait' WaterPaper = b'WtrP' Watercolor = b'Wtrc' Wave = b'Wave' Wind = b'Wnd ' ZigZag = b'ZgZg' _3DTransform = b'TdT ' Form class psd_tools.terminology.Form(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Form definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html Class = b'Clss' Enumerated = b'Enmr' Identifier = b'Idnt' Index = b'indx' Offset = b'rele' Property = b'prop' Key class psd_tools.terminology.Key(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Key definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html A = b'A ' Adjustment = b'Adjs' Aligned = b'Algd' Alignment = b'Algn' AllExcept = b'AllE' AllPS = b'All ' AllToolOptions = b'AlTl' AlphaChannelOptions = b'AChn' AlphaChannels = b'AlpC' AmbientBrightness = b'AmbB' AmbientColor = b'AmbC' Amount = b'Amnt' AmplitudeMax = b'AmMx' AmplitudeMin = b'AmMn' Anchor = b'Anch' Angle = b'Angl' Angle1 = b'Ang1' Angle2 = b'Ang2' Angle3 = b'Ang3' Angle4 = b'Ang4' AntiAlias = b'AntA' Append = b'Appe' Apply = b'Aply' Area = b'Ar ' Arrowhead = b'Arrw' As = b'As ' AssetBin = b'Asst' AssumedCMYK = b'AssC' AssumedGray = b'AssG' AssumedRGB = b'AssR' At = b'At ' Auto = b'Auto' AutoContrast = b'AuCo' AutoErase = b'Atrs' AutoKern = b'AtKr' AutoUpdate = b'AtUp' Axis = b'Axis' B = b'B ' Background = b'Bckg' BackgroundColor = b'BckC' BackgroundLevel = b'BckL' Backward = b'Bwd ' Balance = b'Blnc' BaselineShift = b'Bsln' BeepWhenDone = b'BpWh' BeginRamp = b'BgnR' BeginSustain = b'BgnS' BevelDirection = b'bvlD' BevelEmboss = b'ebbl' BevelStyle = b'bvlS' BevelTechnique = b'bvlT' BigNudgeH = b'BgNH' BigNudgeV = b'BgNV' BitDepth = b'BtDp' Black = b'Blck' BlackClip = b'BlcC' BlackGeneration = b'Blcn' BlackGenerationCurve = b'BlcG' BlackIntensity = b'BlcI' BlackLevel = b'BlcL' BlackLimit = b'BlcL' Bleed = b'Bld ' BlendRange = b'Blnd' Blue = b'Bl ' BlueBlackPoint = b'BlBl' BlueFloat = b'blueFloat' BlueGamma = b'BlGm' BlueWhitePoint = b'BlWh' BlueX = b'BlX ' BlueY = b'BlY ' Blur = b'blur' BlurMethod = b'BlrM' BlurQuality = b'BlrQ' Book = b'Bk ' BorderThickness = b'BrdT' Bottom = b'Btom' Brightness = b'Brgh' BrushDetail = b'BrsD' BrushSize = b'BrsS' BrushType = b'BrsT' Brushes = b'Brsh' BumpAmplitude = b'BmpA' BumpChannel = b'BmpC' By = b'By ' Byline = b'Byln' BylineTitle = b'BylT' ByteOrder = b'BytO' CMYKSetup = b'CMYS' CachePrefs = b'CchP' Calculation = b'Clcl' CalibrationBars = b'Clbr' Caption = b'Cptn' CaptionWriter = b'CptW' Category = b'Ctgr' CellSize = b'ClSz' Center = b'Cntr' CenterCropMarks = b'CntC' ChalkArea = b'ChlA' Channel = b'Chnl' ChannelMatrix = b'ChMx' ChannelName = b'ChnN' Channels = b'Chns' ChannelsInterleaved = b'ChnI' CharcoalAmount = b'ChAm' CharcoalArea = b'ChrA' ChokeMatte = b'Ckmt' ChromeFX = b'ChFX' City = b'City' ClearAmount = b'ClrA' ClippingPath = b'ClPt' ClippingPathEPS = b'ClpP' ClippingPathFlatness = b'ClpF' ClippingPathIndex = b'ClpI' ClippingPathInfo = b'Clpg' CloneSource = b'ClnS' ClosedSubpath = b'Clsp' Color = b'Clr ' ColorChannels = b'Clrh' ColorCorrection = b'ClrC' ColorIndicates = b'ClrI' ColorManagement = b'ClMg' ColorPickerPrefs = b'Clrr' ColorSpace = b'ClrS' ColorTable = b'ClrT' Colorize = b'Clrz' Colors = b'Clrs' ColorsList = b'ClrL' ColumnWidth = b'ClmW' CommandKey = b'CmdK' Compensation = b'Cmpn' Compression = b'Cmpr' Concavity = b'Cncv' Condition = b'Cndt' Constant = b'Cnst' Constrain = b'Cnst' ConstrainProportions = b'CnsP' ConstructionFOV = b'Cfov' Contiguous = b'Cntg' Continue = b'Cntn' Continuity = b'Cnty' ContourType = b'ShpC' Contrast = b'Cntr' Convert = b'Cnvr' Copy = b'Cpy ' Copyright = b'Cpyr' CopyrightNotice = b'CprN' CornerCropMarks = b'CrnC' Count = b'Cnt ' CountryName = b'CntN' CrackBrightness = b'CrcB' CrackDepth = b'CrcD' CrackSpacing = b'CrcS' CreateLayersFromLayerFX = b'blfl' Credit = b'Crdt' Crossover = b'Crss' Current = b'Crnt' CurrentHistoryState = b'CrnH' CurrentLight = b'CrnL' CurrentToolOptions = b'CrnT' Curve = b'Crv ' CurveFile = b'CrvF' Custom = b'Cstm' CustomForced = b'CstF' CustomMatte = b'CstM' CustomPalette = b'CstP' Cyan = b'Cyn ' DCS = b'DCS ' DPXFormat = b'DPXf' DarkIntensity = b'DrkI' Darkness = b'Drkn' DateCreated = b'DtCr' Datum = b'Dt ' Definition = b'Dfnt' Density = b'Dnst' Depth = b'Dpth' DestBlackMax = b'Dstl' DestBlackMin = b'DstB' DestWhiteMax = b'Dstt' DestWhiteMin = b'DstW' DestinationMode = b'DstM' Detail = b'Dtl ' Diameter = b'Dmtr' DiffusionDither = b'DffD' Direction = b'Drct' DirectionBalance = b'DrcB' DisplaceFile = b'DspF' DisplacementMap = b'DspM' DisplayPrefs = b'DspP' Distance = b'Dstn' Distortion = b'Dstr' Distribution = b'Dstr' Dither = b'Dthr' DitherAmount = b'DthA' DitherPreserve = b'Dthp' DitherQuality = b'Dthq' DocumentID = b'DocI' DotGain = b'DtGn' DotGainCurves = b'DtGC' DropShadow = b'DrSh' Duplicate = b'Dplc' DynamicColorSliders = b'DnmC' Edge = b'Edg ' EdgeBrightness = b'EdgB' EdgeFidelity = b'EdgF' EdgeIntensity = b'EdgI' EdgeSimplicity = b'EdgS' EdgeThickness = b'EdgT' EdgeWidth = b'EdgW' Effect = b'Effc' EmbedCMYK = b'EmbC' EmbedGray = b'EmbG' EmbedLab = b'EmbL' EmbedProfiles = b'EmbP' EmbedRGB = b'EmbR' EmulsionDown = b'EmlD' EnableGestures = b'EGst' Enabled = b'enab' Encoding = b'Encd' End = b'End ' EndArrowhead = b'EndA' EndRamp = b'EndR' EndSustain = b'EndS' Engine = b'Engn' EraseToHistory = b'ErsT' EraserKind = b'ErsK' ExactPoints = b'ExcP' Export = b'Expr' ExportClipboard = b'ExpC' Exposure = b'Exps' Extend = b'Extd' ExtendedQuality = b'EQlt' Extension = b'Extn' ExtensionsQuery = b'ExtQ' ExtrudeDepth = b'ExtD' ExtrudeMaskIncomplete = b'ExtM' ExtrudeRandom = b'ExtR' ExtrudeSize = b'ExtS' ExtrudeSolidFace = b'ExtF' ExtrudeType = b'ExtT' EyeDropperSample = b'EyDr' FPXCompress = b'FxCm' FPXQuality = b'FxQl' FPXSize = b'FxSz' FPXView = b'FxVw' FadeTo = b'FdT ' FadeoutSteps = b'FdtS' Falloff = b'FlOf' Feather = b'Fthr' FiberLength = b'FbrL' File = b'File' FileCreator = b'FlCr' FileInfo = b'FlIn' FileReference = b'FilR' FileSavePrefs = b'FlSP' FileType = b'FlTy' FilesList = b'flst' Fill = b'Fl ' FillColor = b'FlCl' FillNeutral = b'FlNt' FilterLayerPersistentData = b'FlPd' FilterLayerRandomSeed = b'FlRs' Fingerpainting = b'Fngr' FlareCenter = b'FlrC' Flatness = b'Fltn' Flatten = b'Fltt' FlipVertical = b'FlpV' Focus = b'Fcs ' Folders = b'Fldr' FontDesignAxes = b'FntD' FontDesignAxesVectors = b'FntV' FontName = b'FntN' FontScript = b'Scrp' FontStyleName = b'FntS' FontTechnology = b'FntT' ForcedColors = b'FrcC' ForegroundColor = b'FrgC' ForegroundLevel = b'FrgL' Format = b'Fmt ' Forward = b'Fwd ' FrameFX = b'FrFX' FrameWidth = b'FrmW' FreeTransformCenterState = b'FTcs' Frequency = b'Frqn' From = b'From' FromBuiltin = b'FrmB' FromMode = b'FrmM' FunctionKey = b'FncK' Fuzziness = b'Fzns' GCR = b'GCR ' GIFColorFileType = b'GFPT' GIFColorLimit = b'GFCL' GIFExportCaption = b'GFEC' GIFMaskChannelIndex = b'GFMI' GIFMaskChannelInverted = b'GFMV' GIFPaletteFile = b'GFPF' GIFPaletteType = b'GFPL' GIFRequiredColorSpaceType = b'GFCS' GIFRowOrderType = b'GFIT' GIFTransparentColor = b'GFTC' GIFTransparentIndexBlue = b'GFTB' GIFTransparentIndexGreen = b'GFTG' GIFTransparentIndexRed = b'GFTR' GIFUseBestMatch = b'GFBM' Gamma = b'Gmm ' GamutWarning = b'GmtW' GeneralPrefs = b'GnrP' GlobalAngle = b'gblA' GlobalLightingAngle = b'gagl' Gloss = b'Glos' GlowAmount = b'GlwA' GlowTechnique = b'GlwT' Gradient = b'Grad' GradientFill = b'Grdf' Grain = b'Grn ' GrainType = b'Grnt' Graininess = b'Grns' Gray = b'Gry ' GrayBehavior = b'GrBh' GraySetup = b'GrSt' Green = b'Grn ' GreenBlackPoint = b'GrnB' GreenFloat = b'greenFloat' GreenGamma = b'GrnG' GreenWhitePoint = b'GrnW' GreenX = b'GrnX' GreenY = b'GrnY' GridColor = b'GrdC' GridCustomColor = b'Grds' GridMajor = b'GrdM' GridMinor = b'Grdn' GridStyle = b'GrdS' GridUnits = b'Grdt' Group = b'Grup' GroutWidth = b'GrtW' GrowSelection = b'GrwS' Guides = b'Gdes' GuidesColor = b'GdsC' GuidesCustomColor = b'Gdss' GuidesPrefs = b'GdPr' GuidesStyle = b'GdsS' GutterWidth = b'GttW' HalftoneFile = b'HlfF' HalftoneScreen = b'HlfS' HalftoneSize = b'HlSz' HalftoneSpec = b'Hlfp' Hardness = b'Hrdn' HasCmdHPreference = b'HCdH' Header = b'Hdr ' Headline = b'Hdln' Height = b'Hght' HighlightArea = b'HghA' HighlightColor = b'hglC' HighlightLevels = b'HghL' HighlightMode = b'hglM' HighlightOpacity = b'hglO' HighlightStrength = b'HghS' HistoryBrushSource = b'HstB' HistoryPrefs = b'HstP' HistoryStateSource = b'HsSS' HistoryStates = b'HsSt' Horizontal = b'Hrzn' HorizontalScale = b'HrzS' HostName = b'HstN' HostVersion = b'HstV' Hue = b'H ' ICCEngine = b'ICCE' ICCSetupName = b'ICCt' ID = b'Idnt' Idle = b'Idle' ImageBalance = b'ImgB' Import = b'Impr' Impressionist = b'Imps' In = b'In ' Inherits = b'c@#^' InkColors = b'InkC' Inks = b'Inks' InnerGlow = b'IrGl' InnerGlowSource = b'glwS' InnerShadow = b'IrSh' Input = b'Inpt' InputBlackPoint = b'kIBP' InputMapRange = b'Inmr' InputRange = b'Inpr' InputWhitePoint = b'kIWP' Intensity = b'Intn' Intent = b'Inte' InterfaceBevelHighlight = b'IntH' InterfaceBevelShadow = b'Intv' InterfaceBlack = b'IntB' InterfaceBorder = b'Intd' InterfaceButtonDarkShadow = b'Intk' InterfaceButtonDownFill = b'Intt' InterfaceButtonUpFill = b'InBF' InterfaceColorBlue2 = b'ICBL' InterfaceColorBlue32 = b'ICBH' InterfaceColorGreen2 = b'ICGL' InterfaceColorGreen32 = b'ICGH' InterfaceColorRed2 = b'ICRL' InterfaceColorRed32 = b'ICRH' InterfaceIconFillActive = b'IntI' InterfaceIconFillDimmed = b'IntF' InterfaceIconFillSelected = b'Intc' InterfaceIconFrameActive = b'Intm' InterfaceIconFrameDimmed = b'Intr' InterfaceIconFrameSelected = b'IntS' InterfacePaletteFill = b'IntP' InterfaceRed = b'IntR' InterfaceToolTipBackground = b'IntT' InterfaceToolTipText = b'ITTT' InterfaceTransparencyBackground = b'ITBg' InterfaceTransparencyForeground = b'ITFg' InterfaceWhite = b'IntW' Interlace = b'Intr' InterlaceCreateType = b'IntC' InterlaceEliminateType = b'IntE' Interpolation = b'Intr' InterpolationMethod = b'IntM' Invert = b'Invr' InvertMask = b'InvM' InvertSource2 = b'InvS' InvertTexture = b'InvT' IsDirty = b'IsDr' ItemIndex = b'ItmI' JPEGQuality = b'JPEQ' Kerning = b'Krng' Keywords = b'Kywd' Kind = b'Knd ' LUTAnimation = b'LTnm' LZWCompression = b'LZWC' Labels = b'Lbls' Landscape = b'Lnds' LastTransform = b'LstT' Layer = b'Lyr ' LayerEffects = b'Lefx' LayerFXVisible = b'lfxv' LayerID = b'LyrI' LayerName = b'LyrN' Layers = b'Lyrs' Leading = b'Ldng' Left = b'Left' LegacySerialString = b'lSNs' Length = b'Lngt' Lens = b'Lns ' Level = b'Lvl ' Levels = b'Lvls' LightDark = b'LgDr' LightDirection = b'LghD' LightIntensity = b'LghI' LightPosition = b'LghP' LightSource = b'LghS' LightType = b'LghT' LightenGrout = b'LghG' Lightness = b'Lght' Line = b'Line' LinkEnable = b'lnkE' LinkedLayerIDs = b'LnkL' LocalLightingAltitude = b'Lald' LocalLightingAngle = b'lagl' LocalRange = b'LclR' Location = b'Lctn' Log = b'Log ' Logarithmic = b'kLog' LowerCase = b'LwCs' Luminance = b'Lmnc' Magenta = b'Mgnt' MakeVisible = b'MkVs' ManipulationFOV = b'Mfov' MapBlack = b'MpBl' Mapping = b'Mpng' MappingShape = b'MpgS' Material = b'Mtrl' Matrix = b'Mtrx' MatteColor = b'MttC' Maximum = b'Mxm ' MaximumStates = b'MxmS' MemoryUsagePercent = b'MmrU' Merge = b'Mrge' Merged = b'Mrgd' Message = b'Msge' Method = b'Mthd' MezzotintType = b'MztT' Midpoint = b'Mdpn' MidtoneLevels = b'MdtL' Minimum = b'Mnm ' MismatchCMYK = b'MsmC' MismatchGray = b'MsmG' MismatchRGB = b'MsmR' Mode = b'Md ' Monochromatic = b'Mnch' MoveTo = b'MvT ' Name = b'Nm ' Negative = b'Ngtv' New = b'Nw ' Noise = b'Nose' NonImageData = b'NnIm' NonLinear = b'NnLn' Null = b'null' NumLights = b'Nm L' Number = b'Nmbr' NumberOfCacheLevels = b'NCch' NumberOfCacheLevels64 = b'NC64' NumberOfChannels = b'NmbO' NumberOfChildren = b'NmbC' NumberOfDocuments = b'NmbD' NumberOfGenerators = b'NmbG' NumberOfLayers = b'NmbL' NumberOfLevels = b'NmbL' NumberOfPaths = b'NmbP' NumberOfRipples = b'NmbR' NumberOfSiblings = b'NmbS' ObjectName = b'ObjN' Offset = b'Ofst' OldSmallFontType = b'Sftt' On = b'On ' Opacity = b'Opct' Optimized = b'Optm' Orientation = b'Ornt' OriginalHeader = b'OrgH' OriginalTransmissionReference = b'OrgT' OtherCursors = b'OthC' OuterGlow = b'OrGl' Output = b'Otpt' OutputBlackPoint = b'kOBP' OutputWhitePoint = b'kOWP' OverprintColors = b'OvrC' OverrideOpen = b'OvrO' OverridePrinter = b'ObrP' OverrideSave = b'Ovrd' PNGFilter = b'PNGf' PNGInterlaceType = b'PGIT' PageFormat = b'PMpf' PageNumber = b'PgNm' PagePosition = b'PgPs' PageSetup = b'PgSt' PaintCursorKind = b'PnCK' PaintType = b'PntT' PaintingCursors = b'PntC' Palette = b'Plt ' PaletteFile = b'PltF' PaperBrightness = b'PprB' ParentIndex = b'PrIn' ParentName = b'PrNm' Path = b'Path' PathContents = b'PthC' PathName = b'PthN' Pattern = b'Pttn' PencilWidth = b'Pncl' PerspectiveIndex = b'Prsp' Phosphors = b'Phsp' PickerID = b'PckI' PickerKind = b'Pckr' PixelPaintSize = b'PPSz' Platform = b'Pltf' PluginFolder = b'PlgF' PluginPrefs = b'PlgP' Points = b'Pts ' Position = b'Pstn' PostScriptColor = b'PstS' Posterization = b'Pstr' PredefinedColors = b'PrdC' PreferBuiltin = b'PrfB' Preferences = b'Prfr' PreserveAdditional = b'PrsA' PreserveLuminosity = b'PrsL' PreserveTransparency = b'PrsT' Pressure = b'Prs ' Preview = b'Prvw' PreviewCMYK = b'PrvK' PreviewFullSize = b'PrvF' PreviewIcon = b'PrvI' PreviewMacThumbnail = b'PrvM' PreviewWinThumbnail = b'PrvW' PreviewsQuery = b'PrvQ' PrintSettings = b'PMps' ProfileSetup = b'PrfS' ProvinceState = b'PrvS' Quality = b'Qlty' QuickMask = b'QucM' RGBSetup = b'RGBS' Radius = b'Rds ' RandomSeed = b'RndS' Ratio = b'Rt ' RecentFiles = b'Rcnf' Red = b'Rd ' RedBlackPoint = b'RdBl' RedFloat = b'redFloat' RedGamma = b'RdGm' RedWhitePoint = b'RdWh' RedX = b'RdX ' RedY = b'RdY ' RegistrationMarks = b'RgsM' Relative = b'Rltv' Relief = b'Rlf ' RenderFidelity = b'Rfid' Resample = b'Rsmp' ResizeWindowsOnZoom = b'RWOZ' Resolution = b'Rslt' ResourceID = b'RsrI' Response = b'Rspn' RetainHeader = b'RtnH' Reverse = b'Rvrs' Right = b'Rght' RippleMagnitude = b'RplM' RippleSize = b'RplS' Rotate = b'Rtt ' Roundness = b'Rndn' RulerOriginH = b'RlrH' RulerOriginV = b'RlrV' RulerUnits = b'RlrU' Saturation = b'Strt' SaveAndClose = b'SvAn' SaveComposite = b'SvCm' SavePaletteLocations = b'PltL' SavePaths = b'SvPt' SavePyramids = b'SvPy' Saving = b'Svng' Scale = b'Scl ' ScaleHorizontal = b'SclH' ScaleVertical = b'SclV' Scaling = b'Scln' Scans = b'Scns' ScratchDisks = b'ScrD' ScreenFile = b'ScrF' ScreenType = b'ScrT' Separations = b'Sprt' SerialString = b'SrlS' ShadingIntensity = b'ShdI' ShadingNoise = b'ShdN' ShadingShape = b'ShdS' ShadowColor = b'sdwC' ShadowIntensity = b'ShdI' ShadowLevels = b'ShdL' ShadowMode = b'sdwM' ShadowOpacity = b'sdwO' Shape = b'Shp ' Sharpness = b'Shrp' ShearEd = b'ShrE' ShearPoints = b'ShrP' ShearSt = b'ShrS' ShiftKey = b'ShfK' ShiftKeyToolSwitch = b'ShKT' ShortNames = b'ShrN' ShowEnglishFontNames = b'ShwE' ShowMenuColors = b'SwMC' ShowToolTips = b'ShwT' ShowTransparency = b'ShTr' SizeKey = b'Sz ' Skew = b'Skew' SmallFontType = b'Sfts' SmartBlurMode = b'SmBM' SmartBlurQuality = b'SmBQ' Smooth = b'Smoo' Smoothness = b'Smth' SnapshotInitial = b'SnpI' SoftClip = b'SfCl' Softness = b'Sftn' SolidFill = b'SoFi' Source = b'Srce' Source2 = b'Src2' SourceMode = b'SrcM' Spacing = b'Spcn' SpecialInstructions = b'SpcI' SpherizeMode = b'SphM' Spot = b'Spot' SprayRadius = b'SprR' SquareSize = b'SqrS' SrcBlackMax = b'Srcl' SrcBlackMin = b'SrcB' SrcWhiteMax = b'Srcm' SrcWhiteMin = b'SrcW' Start = b'Strt' StartArrowhead = b'StrA' State = b'Stte' Strength = b'srgh' StrengthRatio = b'srgR' Strength_PLUGIN = b'Strg' StrokeDetail = b'StDt' StrokeDirection = b'SDir' StrokeLength = b'StrL' StrokePressure = b'StrP' StrokeSize = b'StrS' StrokeWidth = b'StrW' Style = b'Styl' Styles = b'Stys' StylusIsColor = b'StlC' StylusIsOpacity = b'StlO' StylusIsPressure = b'StlP' StylusIsSize = b'StlS' SubPathList = b'SbpL' SupplementalCategories = b'SplC' SystemInfo = b'SstI' SystemPalette = b'SstP' Target = b'null' TargetPath = b'Trgp' TargetPathIndex = b'TrgP' TermLength = b'Lngt' Text = b'Txt ' TextClickPoint = b'TxtC' TextData = b'TxtD' TextStyle = b'TxtS' TextStyleRange = b'Txtt' Texture = b'Txtr' TextureCoverage = b'TxtC' TextureFile = b'TxtF' TextureType = b'TxtT' Threshold = b'Thsh' TileNumber = b'TlNm' TileOffset = b'TlOf' TileSize = b'TlSz' Title = b'Ttl ' To = b'T ' ToBuiltin = b'TBl ' ToLinked = b'ToLk' ToMode = b'TMd ' ToggleOthers = b'TglO' Tolerance = b'Tlrn' Top = b'Top ' TotalLimit = b'TtlL' Tracking = b'Trck' TransferFunction = b'TrnF' TransferSpec = b'TrnS' Transparency = b'Trns' TransparencyGrid = b'TrnG' TransparencyGridColors = b'TrnC' TransparencyGridSize = b'TrnG' TransparencyPrefs = b'TrnP' TransparencyShape = b'TrnS' TransparentIndex = b'TrnI' TransparentWhites = b'TrnW' Twist = b'Twst' Type = b'Type' UCA = b'UC ' URL = b'URL ' UndefinedArea = b'UndA' Underline = b'Undl' UnitsPrefs = b'UntP' Untitled = b'Untl' UpperY = b'UppY' Urgency = b'Urgn' UseAccurateScreens = b'AcrS' UseAdditionalPlugins = b'AdPl' UseCacheForHistograms = b'UsCc' UseCurves = b'UsCr' UseDefault = b'UsDf' UseGlobalAngle = b'uglg' UseICCProfile = b'UsIC' UseMask = b'UsMs' UserMaskEnabled = b'UsrM' UserMaskLinked = b'Usrs' Using = b'Usng' Value = b'Vl ' Variance = b'Vrnc' Vector0 = b'Vct0' Vector1 = b'Vct1' VectorColor = b'VctC' VersionFix = b'VrsF' VersionMajor = b'VrsM' VersionMinor = b'VrsN' Vertical = b'Vrtc' VerticalScale = b'VrtS' VideoAlpha = b'Vdlp' Visible = b'Vsbl' WatchSuspension = b'WtcS' Watermark = b'watr' WaveType = b'Wvtp' WavelengthMax = b'WLMx' WavelengthMin = b'WLMn' WebdavPrefs = b'WbdP' WetEdges = b'Wtdg' What = b'What' WhiteClip = b'WhtC' WhiteIntensity = b'WhtI' WhiteIsHigh = b'WhHi' WhiteLevel = b'WhtL' WhitePoint = b'WhtP' WholePath = b'WhPt' Width = b'Wdth' WindMethod = b'WndM' With = b'With' WorkPath = b'WrPt' WorkPathIndex = b'WrkP' X = b'X ' Y = b'Y ' Yellow = b'Ylw ' ZigZagType = b'ZZTy' _3DAntiAlias = b'Alis' comp = b'comp' Type class psd_tools.terminology.Type(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Type definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html ActionData = b'ActD' ActionReference = b'#Act' AlignDistributeSelector = b'ADSt' Alignment = b'Alg ' Amount = b'Amnt' AntiAlias = b'Annt' AreaSelector = b'ArSl' AssumeOptions = b'AssO' BevelEmbossStampStyle = b'BESs' BevelEmbossStyle = b'BESl' BitDepth = b'BtDp' BlackGeneration = b'BlcG' BlendMode = b'BlnM' BlurMethod = b'BlrM' BlurQuality = b'BlrQ' BrushType = b'BrsT' BuiltInContour = b'BltC' BuiltinProfile = b'BltP' CMYKSetupEngine = b'CMYE' Calculation = b'Clcn' Channel = b'Chnl' ChannelReference = b'#ChR' CheckerboardSize = b'Chck' ClassColor = b'#Clr' ClassElement = b'#ClE' ClassExport = b'#Cle' ClassFormat = b'#ClF' ClassHueSatHueSatV2 = b'#HsV' ClassImport = b'#ClI' ClassMode = b'#ClM' ClassStringFormat = b'#ClS' ClassTextExport = b'#CTE' ClassTextImport = b'#ClT' Color = b'Clr ' ColorChannel = b'#ClC' ColorPalette = b'ClrP' ColorSpace = b'ClrS' ColorStopType = b'Clry' Colors = b'Clrs' Compensation = b'Cmpn' ContourEdge = b'CntE' Convert = b'Cnvr' CorrectionMethod = b'CrcM' CursorKind = b'CrsK' DCS = b'DCS ' DeepDepth = b'DpDp' Depth = b'Dpth' DiffuseMode = b'DfsM' Direction = b'Drct' DisplacementMap = b'DspM' Distribution = b'Dstr' Dither = b'Dthr' DitherQuality = b'Dthq' DocumentReference = b'#DcR' EPSPreview = b'EPSP' ElementReference = b'#ElR' Encoding = b'Encd' EraserKind = b'ErsK' ExtrudeRandom = b'ExtR' ExtrudeType = b'ExtT' EyeDropperSample = b'EyDp' FPXCompress = b'FxCm' Fill = b'Fl ' FillColor = b'FlCl' FillContents = b'FlCn' FillMode = b'FlMd' ForcedColors = b'FrcC' FrameFill = b'FrFl' FrameStyle = b'FStl' GIFColorFileType = b'GFPT' GIFPaletteType = b'GFPL' GIFRequiredColorSpaceType = b'GFCS' GIFRowOrderType = b'GFIT' GlobalClass = b'GlbC' GlobalObject = b'GlbO' GradientForm = b'GrdF' GradientType = b'GrdT' GrainType = b'Grnt' GrayBehavior = b'GrBh' GuideGridColor = b'GdGr' GuideGridStyle = b'GdGS' HistoryStateSource = b'HstS' HorizontalLocation = b'HrzL' ImageReference = b'#ImR' InnerGlowSource = b'IGSr' IntegerChannel = b'#inC' Intent = b'Inte' InterlaceCreateType = b'IntC' InterlaceEliminateType = b'IntE' Interpolation = b'Intp' Kelvin = b'Klvn' KelvinCustomWhitePoint = b'#Klv' Lens = b'Lns ' LightDirection = b'LghD' LightPosition = b'LghP' LightType = b'LghT' LocationReference = b'#Lct' MaskIndicator = b'MskI' MatteColor = b'MttC' MatteTechnique = b'BETE' MenuItem = b'MnIt' Method = b'Mthd' MezzotintType = b'MztT' Mode = b'Md ' Notify = b'Ntfy' Object = b'Objc' ObjectReference = b'obj ' OnOff = b'OnOf' Ordinal = b'Ordn' Orientation = b'Ornt' PNGFilter = b'PNGf' PNGInterlaceType = b'PGIT' PagePosition = b'PgPs' PathKind = b'PthK' PathReference = b'#PtR' Phosphors = b'Phsp' PhosphorsCustomPhosphors = b'#Phs' PickerKind = b'PckK' PixelPaintSize = b'PPSz' Platform = b'Pltf' Preview = b'Prvw' PreviewCMYK = b'Prvt' ProfileMismatch = b'PrfM' PurgeItem = b'PrgI' QuadCenterState = b'QCSt' Quality = b'Qlty' QueryState = b'QurS' RGBSetupSource = b'RGBS' RawData = b'tdta' RippleSize = b'RplS' RulerUnits = b'RlrU' ScreenType = b'ScrT' Shape = b'Shp ' SmartBlurMode = b'SmBM' SmartBlurQuality = b'SmBQ' SourceMode = b'Cndn' SpherizeMode = b'SphM' State = b'Stte' StringChannel = b'#sth' StringClassFormat = b'#StC' StringCompensation = b'#Stm' StringFSS = b'#Stf' StringInteger = b'#StI' StrokeDirection = b'StrD' StrokeLocation = b'StrL' TextureType = b'TxtT' TransparencyGridColors = b'Trnl' TransparencyGridSize = b'TrnG' TypeClassModeOrClassMode = b'#TyM' UndefinedArea = b'UndA' UnitFloat = b'UntF' Urgency = b'Urgn' UserMaskOptions = b'UsrM' ValueList = b'VlLs' VerticalLocation = b'VrtL' WaveType = b'Wvtp' WindMethod = b'WndM' YesNo = b'YsN ' ZigZagType = b'ZZTy' Unit class psd_tools.terminology.Unit(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None) Unit definitions extracted from PITerminology.h. See https://www.adobe.com/devnet/photoshop/sdk.html Angle = b'#Ang' Density = b'#Rsl' Distance = b'#Rlt' Millimeters = b'#Mlm' Percent = b'#Prc' Pixels = b'#Pxl' Points = b'#Pnt' _None = b'#Nne'
INDICES AND TABLES
• Index • Module Index • Search Page
AUTHOR
Kota Yamaguchi
COPYRIGHT
2019, Kota Yamaguchi 1.10.7 Apr 14, 2025 SRC(1)