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)[source]

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)[source]

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)[source]

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)[source]

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.

Returns:

int

property resolution: float

Resolution.

Returns:

float

Ellipse

class psd_tools.api.shape.Ellipse(data)[source]

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.

Returns:

int

property resolution: float

Resolution.

Returns:

float

Rectangle

class psd_tools.api.shape.Rectangle(data)[source]

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.

Returns:

int

property resolution: float

Resolution.

Returns:

float

RoundedRectangle

class psd_tools.api.shape.RoundedRectangle(data)[source]

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.

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