介绍

Aspose.PSD FOSS 用于 Python 通过一小套类加载、检查和保存 PSD 与 PSB 文档。本文将查看核心 API 的部分内容,这些内容在介绍性文章中未深入覆盖:Image 与 PsdImage 之间的关系、库中使用的几何值类型,以及库如何报告加载和保存错误。


包含内容

图像和 PsdImage

Image 是一个极简的抽象基类:它仅定义了 load(),该方法检查输入并返回具体的子类——对于 PSD/PSB 输入,该子类为 PsdImage。完整的文档表面——color_mode、version、layers、compression、bits_per_channel、size 等——位于 PsdImage 本身,而不是位于 Image 基类上。

from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage

with Image.load("input.psd") as image:
    assert isinstance(image, PsdImage)
    print(f"ColorMode: {image.color_mode}, Version: {image.version}")
    print(f"Size: {image.size}, Layers: {image.layer_count}")

几何值类型

Point、Size、Rectangle 和 RectangleF 是在整个 API 中用于坐标和范围的值类型——Layer.bounds 是一种 Rectangle,而 PsdImage.size 是一种 Size。Rectangle 包含真实的几何方法:contains()、intersect_rect()、union_rect()、inflate()、from_left_top_right_bottom() 等。

from aspose_psd_foss.rectangle import Rectangle

layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")

资源块和异常

PsdImage.image_resources 返回解析后的 ResourceBlock 对象列表 —— 每个对象都公开 id、name、data_size 和 signature。在此 FOSS 版本中,image_resources、global_layer_resources、active_layer 和 has_transparency_data 可以读取但不能重新赋值 —— 每个都有一个 setter,如果被调用会抛出 NotSupportedException,因此请将它们视为只读,即使它们看起来像普通属性。

加载和保存错误会以两种专用异常类型呈现:当文档无法解析时为 PsdLoadException,当文档无法写回时为 PsdSaveException。

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    with PsdImage.load("input.psd") as image:
        for resource in image.image_resources:
            print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
    print(f"Failed to load input.psd: {ex}")

快速入门

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:$PYTHONPATH
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    with PsdImage.load("input.psd") as image:
        print(f"Size: {image.size}, ColorMode: {image.color_mode}")
        print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
    print(f"Load failed: {ex}")

支持的格式

格式扩展名读取写入
PSDpsd✓✓
PSBpsb✓✓

开源与许可

Aspose.PSD FOSS 对于 Python 使用 MIT 许可证,可在商业产品中免费使用,无需版税,也没有评估水印或使用限制。

该库没有任何第三方本机依赖——运行时仅需要 Python 标准库。


快速入门

相关资源