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.layerstheo vị trí; thứ tự danh sách khớp với thứ tự lớp của tài liệu. blend_mode_keychấp nhận bất kỳ giá trị enumBlendModenà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_datavàlayer_blending_ranges_datacó 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ân | Khắc phục |
|---|---|---|
NotSupportedException khi thiết lập channel_information, layer_mask_data, hoặc layer_blending_ranges_data | Ba 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ó mask | Không phải mọi lớp đều có tiểu mục mask | Kiể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ức | Mô tả |
|---|---|
PsdImage.layers | Lấ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 / right | Các chỉnh sửa siêu dữ liệu lớp được hỗ trợ |
Layer.bounds / width / height / channels_count | Hình học lớp chỉ đọc |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Siêu dữ liệu kênh/mặt nạ/phối màu chỉ đọc |