はじめに
Aspose.PSD FOSS for 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 は読み取り可能ですが再代入できません — それぞれのセッターは呼び出されると NotSupportedException を発生させるため、普通のプロパティのように見えても読み取り専用として扱ってください。
ロードと保存のエラーは、2 つの専用例外型として表れます: ドキュメントを解析できない場合は 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:$PYTHONPATHfrom 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}")
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
オープンソースとライセンス
Aspose.PSD FOSS for Python は MIT ライセンスで提供されており、ロイヤリティなしで商用製品に使用でき、評価用の透かしや使用制限はありません。
このライブラリはサードパーティのネイティブ依存関係がゼロです — 実行時には Python 標準ライブラリだけが必要です。