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 та чотири межі (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 властивості у 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Метадані каналу/маски/змішування лише для читання

Дивіться також

 Українська