Layers

Layers

PsdImage.layers trả về mỗi lớp đã phân tích dưới dạng danh sách các đối tượng Layer. Mỗi Layer cung cấp geometry, visibility và compositing state riêng, và metadata về các channel, mask và blending ranges của nó.


Đọc Metadata Lớp

name, bounds (và các loại suy ra width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key, và channels_count đều có thể đọc trực tiếp.

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}")

Các chỉnh sửa Metadata được hỗ trợ

name, is_visible, opacity, clipping, blend_mode_key, và bốn cạnh giới hạn (top/left/bottom/right) có thể được thay đổi tại chỗ và ghi lại bằng 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")

Metadata kênh và mask

channel_information, layer_mask_data và layer_blending_ranges_data là chỉ đọc trong bản FOSS này — các setter của chúng sẽ gây ra 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}")

Xóa hoặc Sắp xếp Lại Các Lớp

PsdImage.layers có cả setter và getter: gán một danh sách đã lọc hoặc đã sắp xếp lại sẽ thay thế bộ sưu tập lớp của tài liệu.

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")

Mẹo và Thực hành Tốt nhất

  • Chỉ mục vào image.layers theo vị trí; thứ tự danh sách khớp với thứ tự lớp của tài liệu.
  • blend_mode_key chấp nhận bất kỳ giá trị enum BlendMode nào — không có xác thực nào được thực hiện đối với chế độ màu đã khai báo của tài liệu.
  • channel_information, layer_mask_data và layer_blending_ranges_data có thể được đọc nhưng không bao giờ được gán lại.
  • Gọi PsdImage.save() một lần sau khi hoàn tất mọi chỉnh sửa; mỗi lần gọi sẽ ghi toàn bộ tài liệu.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
NotSupportedException khi thiết lập channel_information, layer_mask_data, hoặc layer_blending_ranges_dataBa thuộc tính này là chỉ đọc trong bản dựng FOSS mặc dù có setterĐọc giá trị; không cố gắng gán lại nó
layer_mask_data truy cập khi không có maskKhông phải mọi lớp đều có tiểu mục maskKiểm tra layer.has_mask_data trước khi đọc layer.layer_mask_data

FAQ

Tôi có thể xóa một lớp không?

Có — gán lại image.layers vào danh sách đã lọc.

Tôi có thể thay đổi kênh hoặc dữ liệu mặt nạ của lớp không?

Không. channel_information, layer_mask_data và layer_blending_ranges_data chỉ đọc — chỉ name, is_visible, opacity, clipping, blend_mode_key, và các cạnh giới hạn mới có thể thay đổi.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
PsdImage.layersLấy hoặc đặt bộ sưu tập lớp — có thể đặt để xóa/đổi thứ tự
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightCác chỉnh sửa siêu dữ liệu lớp được hỗ trợ
Layer.bounds / width / height / channels_countHình học lớp chỉ đọc
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataSiêu dữ liệu kênh/mặt nạ/phối màu chỉ đọc

Xem thêm

 Tiếng Việt