Layers
Layers
PsdImage.layers は、解析されたすべてのレイヤーを Layer オブジェクトのリストとして返します。各 Layer は、独自のジオメトリ、可視性、合成状態、およびチャンネル、マスク、ブレンド範囲に関するメタデータを公開します。
レイヤーメタデータの読み取り
name、bounds(および派生した width/height/top/left/bottom/right)、is_visible、opacity、clipping、blend_mode_key、および channels_count はすべて直接読み取れます。
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}")サポートされているメタデータの編集
name、is_visible、opacity、clipping、blend_mode_key、および4つの境界エッジ(top/left/bottom/right)は、その場で変更でき、PsdImage.save() を使って書き戻すことができます。
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
layer.name = f"{layer.name} (edited)"
layer.is_visible = not layer.is_visible
layer.opacity = 128
layer.blend_mode_key = BlendMode.MULTIPLY
image.save("output.psd")チャンネルおよびマスクのメタデータ
channel_information、layer_mask_data、およびlayer_blending_ranges_dataはこのFOSSビルドでは読み取り専用です — それらのセッターはNotSupportedExceptionを発生させます。
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}")レイヤーの削除または再配置
PsdImage.layersにはセッターとゲッターの両方があります: フィルタリングまたは再配置されたリストを代入すると、ドキュメントのレイヤーコレクションが置き換えられます。
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
image.layers = [layer for layer in image.layers if layer.is_visible]
image.save("output.psd")ヒントとベストプラクティス
- 位置で
image.layersにインデックス付けします; リストの順序はドキュメント自身のレイヤー順序と一致します。 blend_mode_keyは任意のBlendMode列挙値を受け入れます — ドキュメントの宣言されたカラーモードに対する検証は行われません。channel_information、layer_mask_data、およびlayer_blending_ranges_dataは読み取ることはできますが、再代入はできません。- すべての編集後に
PsdImage.save()を一度呼び出します; 呼び出すたびに完全なドキュメントが書き込まれます。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
NotSupportedException を channel_information、layer_mask_data、または layer_blending_ranges_data に設定する際 | これら3つのプロパティは、setter が存在するにもかかわらず、FOSS ビルドでは読み取り専用です | 値を読み取ってください;再代入しようとしないでください |
layer_mask_data アクセスはマスクがない場合 | すべてのレイヤーにマスクサブセクションがあるわけではありません | 読み取る前に layer.has_mask_data を確認してください layer.layer_mask_data |
FAQ
レイヤーを削除できますか?
はい — image.layers をフィルタ済みリストに再割り当てします。
レイヤーのチャンネルまたはマスクデータを変更できますか?
いいえ。channel_information、layer_mask_data、layer_blending_ranges_data は読み取り専用です — name、is_visible、opacity、clipping、blend_mode_key と境界エッジだけを変更できます。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
PsdImage.layers | レイヤーコレクションを取得または設定します — 削除/並び替えのために設定可能です |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | サポートされているレイヤー メタデータ 編集 |
Layer.bounds / width / height / channels_count | 読み取り専用レイヤー ジオメトリ |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | 読み取り専用 channel/mask/blending metadata |