Introducere

Aspose.PSD FOSS pentru .NET încarcă, inspectează și salvează documente PSD și PSB printr-un mic set de clase. Acest articol analizează părți ale nucleului API pe care articolul introductiv nu le-a acoperit în profunzime: relația de moștenire Image/PsdImage, tipurile de valori geometrice utilizate în întreaga bibliotecă și modul în care biblioteca raportează erorile de încărcare și salvare.


Ce este inclus

Imagine și PsdImage

Image este clasa de bază abstractă și expune Width, Height, Bounds, Load(), Save() și Dispose(). PsdImage este implementarea concretă, sigilată, returnată de Image.Load() pentru intrarea PSD/PSB — convertirea rezultatului la PsdImage expune restul suprafeței documentului: ColorMode, Version, Layers, Compression, BitsPerChannel și altele.

using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}");       // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}");  // PsdImage-specific

Tipuri de valori geometrice

Point, Size, Rectangle și RectangleF sunt tipurile de valori utilizate pentru limite și coordonate în întregul API — Layer.Bounds și Image.Bounds sunt ambele Rectangle, iar PsdImage.Size este un Size. Rectangle conține metode reale de geometrie: Contains(), Intersect(), Union(), Inflate() și FromLeftTopRightBottom(), printre altele.

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

Blocuri de resurse și excepții

PsdImage.ImageResources returnează matricea ResourceBlock[] analizată — fiecare bloc expune ID, DataSize, Name și Signature. În această construcție FOSS, ImageResources, GlobalLayerResources, ActiveLayer și HasTransparencyData pot fi citite, dar nu pot fi reatribuite — fiecare are un setter care aruncă NotSupportedException dacă este apelat, așadar tratați-le ca fiind doar pentru citire, chiar dacă apar ca proprietăți.

Erorile de încărcare și salvare apar ca două tipuri de excepții dedicate: PsdLoadException când un document nu poate fi analizat și PsdSaveException când un document nu poate fi scris înapoi.

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

Pornire rapidă

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

Formate suportate

FormatExtensieCiteșteScrie
Document Photoshoppsd✓✓
Document Photoshop marepsb✓✓

Open Source & Licențiere

Aspose.PSD FOSS pentru .NET este licențiat sub MIT și poate fi utilizat în produse comerciale fără redevențe, fără filigran de evaluare sau limită de utilizare.

Pachetul este la versiunea 1.0.0 și necesită doar .NET 10.0 la rulare — nu are alte dependențe terțe.


Începeți

Resurse conexe