简介
PsdImage.layers 将 PSD 或 PSB 文档中的每个图层返回为 Layer 对象的列表。本文专门查看 Layer 所公开的内容:其几何和可视状态、混合模式和遮罩标志枚举,以及描述图层通道、遮罩和混合范围的元数据类。
包含内容
图层类
每个 Layer 都包含一个名称(name)、一个边界 Rectangle(bounds,以及派生的 width/height/top/left/bottom/right)、可见性和合成状态(is_visible、opacity、clipping、blend_mode_key)以及通道计数(channels_count)。name、is_visible、opacity、clipping、blend_mode_key 和四个边界边缘都可以通过 PsdImage.save() 进行更改并写回。
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
for layer in image.layers:
print(f"{layer.name}: {layer.bounds}, "
f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
f"BlendMode={layer.blend_mode_key}")
混合模式和遮罩标志
blend_mode_key 是一个 BlendMode 枚举值——该库定义了 29 种标准 PSD 混合模式(NORMAL、MULTIPLY、SCREEN、OVERLAY、DARKEN、LIGHTEN、COLORDODGE、COLORBURN、HARDLIGHT、SOFTLIGHT、DIFFERENCE、EXCLUSION、HUE、SATURATION、COLOR、LUMINOSITY 等)。另一个 LayerMaskFlags 标志枚举(NONE、RELATIVE_TO_LAYER、DISABLED、INVERTED_WHEN_BLENDING、USER_MASK_FROM_RENDERING_OTHER_DATA、USER_OR_VECTOR_MASKS_HAVE_PARAMETERS)描述了图层拥有遮罩时的遮罩渲染行为。
通道和遮罩元数据
Layer.channel_information 返回一个 ChannelInformation 对象的列表,描述每个通道的 ID、压缩方法和字节长度。Layer.layer_mask_data(在存在时为 LayerMaskDataShort)描述图层遮罩的边界和标志;Layer.layer_blending_ranges_data 暴露合成和每通道的混合范围。这三个属性在此 FOSS 构建中都是只读的——如果调用其 setter,会抛出 NotSupportedException,即使它们看起来像普通属性。
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
for channel in layer.channel_information:
print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")
if layer.has_mask_data:
mask = layer.layer_mask_data
print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")
快速入门
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHfrom aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
visible_layers = [layer for layer in image.layers if layer.is_visible]
for layer in visible_layers:
print(f"{layer.name}: Opacity={layer.opacity}, BlendMode={layer.blend_mode_key}")
支持的格式
| 格式 | 扩展名 | 读取 | 写入 |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
开源与许可
Aspose.PSD FOSS 对于 Python 使用 MIT 许可证,可在商业产品中使用且无需版税,也没有评估水印或使用限制。
该库没有任何第三方本地依赖——运行时仅需要 Python 标准库。