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