Εισαγωγή
Aspose.PSD FOSS για .NET φορτώνει, επιθεωρεί και αποθηκεύει έγγραφα PSD και PSB μέσω ενός μικρού συνόλου κλάσεων. Αυτό το άρθρο εξετάζει μέρη του πυρήνα API που το εισαγωγικό άρθρο δεν κάλυψε σε βάθος: τη σχέση κληρονομικότητας Image/PsdImage, τους τύπους τιμών γεωμετρίας που χρησιμοποιούνται σε όλη τη βιβλιοθήκη, και πώς η βιβλιοθήκη αναφέρει σφάλματα φόρτωσης και αποθήκευσης.
Τι Περιλαμβάνεται
Εικόνα και PsdImage
Image είναι η αφηρημένη βασική κλάση και εκθέτει τα Width, Height, Bounds, Load(), Save() και Dispose(). PsdImage είναι η κλειδωμένη, συγκεκριμένη υλοποίηση που επιστρέφεται από το Image.Load() για είσοδο PSD/PSB — η μετατροπή του αποτελέσματος σε PsdImage αποκαλύπτει το υπόλοιπο επίπεδο του εγγράφου: ColorMode, Version, Layers, Compression, BitsPerChannel και άλλα.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Τύποι Τιμών Γεωμετρίας
Point, Size, Rectangle και RectangleF είναι οι τύποι τιμών που χρησιμοποιούνται για όρια και συντεταγμένες σε όλο το API — τα Layer.Bounds και Image.Bounds είναι και τα δύο Rectangle, και το PsdImage.Size είναι ένα Size. Το Rectangle περιέχει πραγματικές μεθόδους γεωμετρίας: Contains(), Intersect(), Union(), Inflate() και FromLeftTopRightBottom(), μεταξύ άλλων.
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}");
Μπλοκ Πόρων και Εξαιρέσεις
PsdImage.ImageResources επιστρέφει τον αναλυμένο πίνακα ResourceBlock[] — κάθε μπλοκ εκθέτει τα ID, DataSize, Name και Signature. Σε αυτήν την έκδοση FOSS, τα ImageResources, GlobalLayerResources, ActiveLayer και HasTransparencyData μπορούν να διαβαστούν αλλά όχι να επανεκχωρηθούν — το καθένα έχει setter που ρίχνει NotSupportedException εάν κληθεί, επομένως θεωρήστε τα ως μόνο για ανάγνωση παρόλο που εμφανίζονται ως ιδιότητες.
Τα σφάλματα φόρτωσης και αποθήκευσης εμφανίζονται ως δύο ειδικοί τύποι εξαιρέσεων: PsdLoadException όταν ένα έγγραφο δεν μπορεί να αναλυθεί, και PsdSaveException όταν ένα έγγραφο δεν μπορεί να γραφτεί ξανά.
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}");
}
Γρήγορη Έναρξη
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}");
}
Υποστηριζόμενες Μορφές
| Μορφή | Επέκταση | Ανάγνωση | Εγγραφή |
|---|---|---|---|
| Έγγραφο Photoshop | psd | ✓ | ✓ |
| Μεγάλο Έγγραφο Photoshop | psb | ✓ | ✓ |
Ανοιχτός Κώδικας & Άδειες
Aspose.PSD FOSS για .NET είναι αδειοδοτημένο υπό την άδεια MIT και μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς δικαιώματα, χωρίς υδατογράφημα αξιολόγησης ή περιορισμό χρήσης.
Το πακέτο είναι στην έκδοση 1.0.0 και απαιτεί μόνο .NET 10.0 σε χρόνο εκτέλεσης — δεν έχει άλλες εξαρτήσεις τρίτων.