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 build
using 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ạngPhần mở rộngĐọcGhi
Tài liệu Photoshoppsd✓✓
Tài liệu Photoshop lớnpsb✓✓

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.


Bắt đầu

Tài nguyên liên quan