核心 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 | 已解析的图像资源块(只读) |