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)[source]
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:
- 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).
- 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)
- 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
, orLine
.
- 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 tagged_blocks: TaggedBlocks
Layer tagged blocks that is a dict-like container of settings.
See
psd_tools.constants.Tag
for available keys.- Returns:
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)[source]
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:
- 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).
- 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)
- 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
, orLine
.
- 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 tagged_blocks: TaggedBlocks
Layer tagged blocks that is a dict-like container of settings.
See
psd_tools.constants.Tag
for available keys.- Returns:
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)[source]
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:
- 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 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)
- 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
, orLine
.
- 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 tagged_blocks: TaggedBlocks
Layer tagged blocks that is a dict-like container of settings.
See
psd_tools.constants.Tag
for available keys.- Returns:
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
Curves
Exposure
Levels
Vibrance
HueSaturation
- class psd_tools.api.adjustments.HueSaturation(*args: Any)[source]
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
BlackAndWhite
- class psd_tools.api.adjustments.BlackAndWhite(*args: Any)[source]
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
ChannelMixer
ColorLookup
Posterize
Threshold
SelectiveColor
GradientMap
- class psd_tools.api.adjustments.GradientMap(*args: Any)[source]
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