Introduction

Aspose.PSD FOSS for .NET charge, inspecte et enregistre les documents PSD et PSB via un petit ensemble de classes. Cet article examine les parties du cœur API que le billet d’introduction n’a pas couvert en profondeur : la relation d’héritage Image/PsdImage, les types de valeurs géométriques utilisés dans toute la bibliothèque, et la façon dont la bibliothèque signale les erreurs de chargement et d’enregistrement.


Ce qui est inclus

Image et PsdImage

Image est la classe de base abstraite et expose Width, Height, Bounds, Load(), Save() et Dispose(). PsdImage est l’implémentation concrète scellée renvoyée par Image.Load() pour une entrée PSD/PSB — convertir le résultat en PsdImage expose le reste de la surface du document : ColorMode, Version, Layers, Compression, BitsPerChannel et plus.

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

Types de valeurs géométriques

Point, Size, Rectangle et RectangleF sont les types de valeurs utilisés pour les limites et les coordonnées dans tout le API — Layer.Bounds et Image.Bounds sont tous deux Rectangle, et PsdImage.Size est un Size. Rectangle possède de vraies méthodes géométriques : Contains(), Intersect(), Union(), Inflate() et FromLeftTopRightBottom(), entre autres.

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

Blocs de ressources et exceptions

PsdImage.ImageResources renvoie le tableau ResourceBlock[] analysé — chaque bloc expose ID, DataSize, Name et Signature. Dans cette version FOSS, ImageResources, GlobalLayerResources, ActiveLayer et HasTransparencyData peuvent être lus mais pas réassignés — chacun possède un setter qui lève NotSupportedException s’il est appelé, donc considérez-les comme en lecture seule même s’ils apparaissent comme des propriétés.

Les erreurs de chargement et d’enregistrement apparaissent sous forme de deux types d’exception dédiés : PsdLoadException lorsqu’un document ne peut pas être analysé, et PsdSaveException lorsqu’un document ne peut pas être réécrit.

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

Démarrage rapide

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

Formats pris en charge

FormatExtensionLireÉcrire
Document Photoshoppsd✓✓
Grand document Photoshoppsb✓✓

Open source et licences

Aspose.PSD FOSS pour .NET est sous licence MIT et peut être utilisé dans des produits commerciaux sans redevances, sans filigrane d’évaluation ni limite d’utilisation.

Le package est en version 1.0.0 et nécessite uniquement .NET 10.0 à l’exécution — il n’a aucune autre dépendance tierce.


Premiers pas

Ressources associées