Giới thiệu
PsdImage.Layers trả về mọi lớp trong tài liệu PSD hoặc PSB dưới dạng mảng Layer. Bài viết này tập trung vào những gì một Layer tiết lộ: hình học và trạng thái trực quan của nó, các liệt kê chế độ hòa trộn và cờ mặt nạ, và các lớp siêu dữ liệu mô tả các kênh, mặt nạ và phạm vi hòa trộn của lớp.
Nội dung bao gồm
Lớp Layer
Mỗi Layer có tên Pascal (Name), một Rectangle bao quanh (Bounds, với các giá trị dẫn xuất Width/Height/Top/Left/Bottom/Right), trạng thái hiển thị và hợp thành (IsVisible, Opacity, Clipping, BlendModeKey), và số lượng kênh (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey, và bốn cạnh giới hạn đều có thể được thay đổi và ghi lại bằng PsdImage.Save().
using var image = (PsdImage)Image.Load(inputPath);
foreach (Layer layer in image.Layers)
{
Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
$"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
$"BlendMode={layer.BlendModeKey}");
}
Chế độ hòa trộn và cờ mặt nạ
BlendModeKey là một giá trị enum BlendMode — thư viện định nghĩa tất cả 29 chế độ hòa trộn PSD tiêu chuẩn (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, và các chế độ khác). Một enum LayerMaskFlags riêng biệt (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) mô tả hành vi render mặt nạ khi một lớp có mặt nạ.
Siêu dữ liệu Kênh và Mặt nạ
Layer.ChannelInformation trả về một ChannelInformation[] mô tả ID của mỗi kênh, phương pháp nén và độ dài tính bằng byte. Layer.LayerMaskData (một LayerMaskData trừu tượng, cụ thể là một LayerMaskDataShort khi có) mô tả giới hạn và cờ của mặt nạ lớp; Layer.LayerBlendingRangesData cung cấp các phạm vi pha trộn tổng hợp và từng kênh. Ba thuộc tính này đều chỉ đọc trong bản dựng FOSS này — các setter của chúng sẽ ném NotSupportedException nếu được gọi, mặc dù chúng hiển thị như các thuộc tính get/set thông thường.
Layer layer = image.Layers[0];
foreach (ChannelInformation channel in layer.ChannelInformation)
{
Console.WriteLine($"Channel {channel.ChannelID}: {channel.CompressionMethod}, {channel.Length} bytes");
}
if (layer.LayerMaskData is { } mask)
{
Console.WriteLine($"Mask bounds: {mask.MaskRectangle}, flags: {mask.Flags}");
}
Bắt đầu nhanh
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers;
using System.Linq;
using var image = (PsdImage)Image.Load("input.psd");
var visibleLayers = image.Layers.Where(layer => layer.IsVisible);
foreach (Layer layer in visibleLayers)
{
Console.WriteLine($"{layer.Name}: Opacity={layer.Opacity}, BlendMode={layer.BlendModeKey}");
}
Định dạng được hỗ trợ
| Định dạng | Phần mở rộng | Đọc | Ghi |
|---|---|---|---|
| Tài liệu Photoshop | psd | ✓ | ✓ |
| Tài liệu Photoshop lớn | psb | ✓ | ✓ |
Mã nguồn mở & Giấy phép
Aspose.PSD FOSS cho .NET được cấp phép MIT và có thể được sử dụng trong các sản phẩm thương mại mà không có phí bản quyền, không có dấu nước đánh giá hoặc giới hạn sử dụng.
Gói này ở phiên bản 1.0.0 và chỉ yêu cầu .NET 10.0 tại thời gian chạy — nó không có bất kỳ phụ thuộc bên thứ ba nào khác.