核心 API

核心 API

PsdImage 是加载、检查和保存 PSD/PSB 文档的入口点。它扩展了抽象的 Image 基类,该基类仅声明了 load()——文档其余的表面(width、height、save()、上下文管理器支持)在 PsdImage 本身上定义,而不是继承的。


加载和保存文档

Image.load() 接受文件路径或流并返回一个 Image;对于 PSD/PSB 输入,这始终是一个 PsdImage,因此文档表面可以立即使用,无需显式强制转换。PsdImage 还支持 with 语句以实现自动清理,且 PsdImage.save() 将文档写回文件路径或流。

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load(input_path) as image:
    # ... inspect or edit ...
    image.save(output_path)

文档头部属性

PsdImage 将解析后的头部公开为类型化属性:width、height、bits_per_channel、color_mode、version、compression、size 和 is_flatten。

print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Compression: {image.compression}, IsFlatten: {image.is_flatten}")

图像资源

PsdImage.image_resources 返回解析后的 ResourceBlock 对象列表。在此 FOSS 构建中,image_resources、global_layer_resources、active_layer 和 has_transparency_data 可以读取但不可重新赋值——它们的 setter 会抛出 NotSupportedException。

for resource in image.image_resources:
    print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")

提示和最佳实践

  • Image.load() 已经为 PSD/PSB 输入返回一个 PsdImage — 不需要进行强制转换,这与该库的其他语言端口不同。
  • 使用 with 语句; PsdImage 支持上下文管理器协议以进行清理。
  • 即使它们公开了 setter,也应将 image_resources、global_layer_resources、active_layer 和 has_transparency_data 视为只读。
  • 在对 image.layers 进行索引之前检查 image.layer_count — 扁平化文档可能没有层。

常见问题

问题原因修复
NotSupportedException 在设置 image_resources 时即使具有 setter,此属性在 FOSS 构建中仍为只读读取该值;不要尝试重新赋值
已扁平化文档中的空 image.layers 列表is_flatten 为 True,且文档没有已解析的层在索引到 image.layers 之前检查 image.layer_count (或 image.is_flatten)

FAQ

加载 PSD 文档会解码像素数据吗?

不。PsdImage.load() 在不解码或渲染像素数据的情况下解析文档头、图层元数据和资源。

我可以将 PSD 文件转换为其他图像格式吗?

不。此库仅加载、检查并保存 PSD/PSB 文档——它不渲染像素数据,也不转换为其他图像格式。


API Reference 摘要

类/方法描述
Image.load(path) / Image.load(stream)加载 PSD 或 PSB 文档
PsdImage.save(path) / PsdImage.save(stream)保存文档
PsdImage.width / height / bits_per_channel / color_mode / version / compression / size / is_flatten文档头部属性
PsdImage.image_resources已解析的图像资源块(只读)

另请参阅

 中文