Man page - psd-tools(1)
Packages contains this manual
apt-get install python3-psd-tools
Manual
SRC
NAMEINSTALLATION
GETTING STARTED
Usage
Command line
Working with PSD document
Working with Layers
Modifying the layer structure
Exporting data to PIL
Exporting data to NumPy
Migrating to 1.10
Migrating to 1.9
Migrating to 1.8
PSDImage
Layers
PIL export
Low-level data structure
Drop pymaging support
Contributing
Package design
Testing
Documentation
Acknowledgments
FEATURES
psd_tools
PSDImage
psd_tools.api.adjustments
Fill layers
SolidColorFill
PatternFill
GradientFill
Adjustment layers
BrightnessContrast
Curves
Exposure
Levels
Vibrance
HueSaturation
ColorBalance
BlackAndWhite
PhotoFilter
ChannelMixer
ColorLookup
Posterize
Threshold
SelectiveColor
GradientMap
psd_tools.api.effects
DropShadow
InnerShadow
OuterGlow
InnerGlow
ColorOverlay
GradientOverlay
PatternOverlay
Stroke
BevelEmboss
Satin
psd_tools.api.layers
Artboard
Group
PixelLayer
ShapeLayer
SmartObjectLayer
TypeLayer
psd_tools.api.mask
Mask
psd_tools.api.shape
VectorMask
Stroke
Origination
Invalidated
Line
Ellipse
Rectangle
RoundedRectangle
psd_tools.api.smart_object
SmartObject
psd_tools.constants
BlendMode
ChannelID
Clipping
ColorMode
ColorSpaceID
Compression
EffectOSType
GlobalLayerMaskKind
LinkedLayerType
PathResourceID
PlacedLayerType
PrintScaleStyle
Resource
SectionDivider
Tag
TextType
psd_tools.psd
PSD
psd_tools.psd.base
BaseElement
EmptyElement
ValueElement
NumericElement
IntegerElement
ShortIntegerElement
ByteElement
BooleanElement
StringElement
ListElement
DictElement
psd_tools.psd.color_mode_data
ColorModeData
psd_tools.psd.descriptor
Alias
Bool
Class
Class1
Class2
Class3
Descriptor
Double
Enumerated
EnumeratedReference
GlobalObject
Identifier
Index
Integer
LargeInteger
List
Name
ObjectArray
Property
Offset
Path
RawData
Reference
String
UnitFloat
UnitFloats
psd_tools.psd.engine_data
EngineData
EngineData2
Bool
Dict
Float
Integer
List
Property
String
psd_tools.psd.effects_layer
EffectsLayer
CommonStateInfo
ShadowInfo
OuterGlowInfo
InnerGlowInfo
BevelInfo
SolidFillInfo
psd_tools.psd.filter_effects
FilterEffects
FilterEffect
FilterEffectChannel
FilterEffectExtra
psd_tools.psd.header
FileHeader
psd_tools.psd.image_data
ImageData
psd_tools.psd.image_resources
ImageResources
ImageResource
AlphaIdentifiers
AlphaNamesPascal
AlphaNamesUnicode
Byte
GridGuidesInfo
HalftoneScreens
HalftoneScreen
Integer
LayerGroupEnabledIDs
LayerGroupInfo
LayerSelectionIDs
ShortInteger
PascalString
PixelAspectRatio
PrintFlags
PrintFlagsInfo
PrintScale
ResoulutionInfo
Slices
SlicesV6
SliceV6
ThumbnailResource
ThumbnailResourceV4
TransferFunctions
TransferFunction
URLList
URLItem
VersionInfo
psd_tools.psd.layer_and_mask
LayerAndMaskInformation
LayerInfo
GlobalLayerMaskInfo
LayerRecords
LayerRecord
LayerFlags
LayerBlendingRanges
MaskData
MaskFlags
MaskParameters
ChannelInfo
ChannelImageData
ChannelDataList
ChannelData
psd_tools.psd.linked_layer
LinkedLayers
LinkedLayer
psd_tools.psd.patterns
Patterns
Pattern
VirtualMemoryArrayList
VirtualMemoryArray
psd_tools.psd.tagged_blocks
Todo
TaggedBlocks
TaggedBlock
Annotations
Annotation
Bytes
ChannelBlendingRestrictionsSetting
FilterMask
MetadataSettings
MetadataSetting
PixelSourceData2
PlacedLayerData
ProtectedSetting
ReferencePoint
SectionDividerSetting
SheetColorSetting
SmartObjectLayerData
TypeToolObjectSetting
UserMask
psd_tools.psd.vector
Path
Subpath
Knot
ClipboardRecord
PathFillRule
InitialFillRule
VectorMaskSetting
VectorStrokeContentSetting
psd_tools.terminology
Klass
Enum
Event
Form
Key
Type
Unit
INDICES AND TABLES
AUTHOR
COPYRIGHT
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