Giới thiệu
Aspose.PSD FOSS cho .NET tải, kiểm tra và lưu tài liệu PSD và PSB thông qua một tập hợp nhỏ các lớp. Bài viết này xem xét các phần của API lõi mà bài viết giới thiệu chưa đề cập chi tiết: mối quan hệ kế thừa Image/PsdImage, các kiểu giá trị hình học được sử dụng trong toàn bộ thư viện, và cách thư viện báo cáo lỗi tải và lưu.
Nội dung bao gồm
Hình ảnh và PsdImage
Image là lớp cơ sở trừu tượng và công khai Width, Height, Bounds, Load(), Save(), và Dispose(). PsdImage là triển khai cụ thể, đóng gói được Image.Load() trả về cho đầu vào PSD/PSB — ép kiểu kết quả sang PsdImage sẽ hiển thị phần còn lại của bề mặt tài liệu: ColorMode, Version, Layers, Compression, BitsPerChannel, và hơn nữa.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Các Kiểu Giá Trị Hình Học
Point, Size, Rectangle, và RectangleF là các kiểu giá trị được sử dụng cho giới hạn và tọa độ trên toàn bộ API — Layer.Bounds và Image.Bounds đều là Rectangle, và PsdImage.Size là một Size. Rectangle chứa các phương pháp hình học thực: Contains(), Intersect(), Union(), Inflate(), và FromLeftTopRightBottom(), trong số các phương pháp khác.
Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;
bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");
Các khối tài nguyên và ngoại lệ
PsdImage.ImageResources trả về mảng ResourceBlock[] đã được phân tích — mỗi khối phơi bày ID, DataSize, Name, và Signature. Trong bản dựng FOSS này, ImageResources, GlobalLayerResources, ActiveLayer, và HasTransparencyData có thể được đọc nhưng không thể gán lại — mỗi cái có một setter ném NotSupportedException nếu được gọi, vì vậy hãy xử lý chúng như chỉ đọc mặc dù chúng xuất hiện như các thuộc tính.
Các lỗi tải và lưu xuất hiện dưới dạng hai loại ngoại lệ riêng biệt: PsdLoadException khi một tài liệu không thể được phân tích, và PsdSaveException khi một tài liệu không thể được ghi lại.
try
{
using var image = (PsdImage)Image.Load(inputPath);
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}
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;
try
{
using var image = (PsdImage)Image.Load("input.psd");
Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Load failed: {ex.Message}");
}
Các đị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 đang ở phiên bản 1.0.0 và chỉ yêu cầu .NET 10.0 khi chạy — nó không có bất kỳ phụ thuộc bên thứ ba nào khác.