はじめに

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 は、各チャンネルの ID、圧縮方法、バイト長を記述する ChannelInformation オブジェクトのリストを返します。Layer.layer_mask_data(存在する場合は LayerMaskDataShort)はレイヤーマスクの境界とフラグを記述します;Layer.layer_blending_ranges_data は合成およびチャンネルごとのブレンド範囲を公開します。これら 3 つのプロパティはすべてこの FOSS ビルドでは読み取り専用です — 呼び出された場合、セッターは 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:$PYTHONPATH
from 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}")

サポートされているフォーマット

フォーマット拡張子読み取り書き込み
PSDpsd✓✓
PSBpsb✓✓

オープンソースとライセンス

Aspose.PSD FOSS for Python は MIT ライセンスで提供されており、ロイヤリティなしで商用製品に使用でき、評価用の透かしや使用制限はありません。

このライブラリはサードパーティ製のネイティブ依存関係が一切なく、実行時に必要なのは Python 標準ライブラリだけです。


はじめに

関連リソース