Αντιμετώπιση προβλημάτων Aspose.PSD FOSS for .NET

Αντιμετώπιση προβλημάτων Aspose.PSD FOSS for .NET

Αντιμετώπιση προβλημάτων Aspose.PSD FOSS για .NET

Αυτή η σελίδα καλύπτει τα πιο κοινά προβλήματα που προκύπτουν κατά τη φόρτωση, την επιθεώρηση και την αποθήκευση εγγράφων PSD/PSB με το Aspose.PSD FOSS για .NET.


Προβλήματα Φόρτωσης

PsdLoadException με μήνυμα σχετικά με μη υποστηριζόμενη έκδοση

Το πεδίο έκδοσης PSD που δηλώνεται στο αρχείο δεν είναι ούτε η τυπική έκδοση PSD ούτε η τιμή μεγάλου εγγράφου PSB. Επιβεβαιώστε ότι το αρχείο είναι ένα γνήσιο, ακατάσχετο έγγραφο PSD/PSB πριν το φορτώσετε:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Not a valid PSD/PSB file: {ex.Message}");
}

PsdLoadException σχετικά με μήκος τμήματος που υπερβαίνει ένα όριο

Τα εσωτερικά πεδία μήκους του αρχείου δεν είναι συνεπή με το πραγματικό του μέγεθος — αυτό συνήθως σημαίνει ότι το αρχείο είναι κομμένο ή κατεστραμμένο, όχι ότι χρησιμοποιεί μια μη υποστηριζόμενη αλλά κατά τα άλλα έγκυρη δομή. Εξαγάγετε ξανά το αρχείο από την εφαρμογή προέλευσής του και δοκιμάστε ξανά.


Προβλήματα αποθήκευσης

PsdSaveException σχετικά με το μήκος μιας συμβολοσειράς Pascal

Μια τιμή συμβολοσειράς — συνήθως το όνομα ενός στρώματος ή πόρου — υπερβαίνει τα 255 byte, το μέγιστο που μπορεί να κωδικοποιήσει ένα πεδίο Pascal string του PSD:

layer.Name = layer.Name.Length > 255 ? layer.Name[..255] : layer.Name;
image.Save("output.psd");

Προβλήματα επεξεργασίας

NotSupportedException κατά τη ρύθμιση μιας ιδιότητας

Πολλές ιδιότητες είναι μόνο για ανάγνωση σε αυτήν την έκδοση FOSS. Στα PsdImage: ActiveLayer, ImageResources, GlobalLayerResources, HasTransparencyData. Στα Layer: ChannelInformation, LayerMaskData, LayerBlendingRangesData. Θεωρήστε τα ως μόνο-ανάγνωση — μην τα εκχωρείτε.

Η διαφάνεια του στρώματος φαίνεται λανθασμένη μετά τη ρύθμιση της

Layer.Opacity είναι ένα byte στο εύρος 0-255, όχι κλάσμα 0.0-1.0 ή ποσοστό:

layer.Opacity = 200; // approximately 78% opaque, not 200%

Η αφαίρεση ενός επιπέδου δεν έχει αποτέλεσμα

PsdImage.Layers έχει έναν λειτουργικό setter στο επίπεδο της συλλογής, αλλά τα μεμονωμένα στοιχεία του πίνακα δεν μπορούν απλώς να αφαιρεθούν εντόνως — εκχωρήστε ξανά ολόκληρο τον φιλτραρισμένο πίνακα:

image.Layers = image.Layers.Where(l => l.Name != "Unwanted Layer").ToArray();

Προβλήματα Εγκατάστασης

Το πακέτο δεν βρέθηκε

Επιβεβαιώστε την ακριβή ταυτότητα του πακέτου:

dotnet add package Aspose.PSD.FOSS

Λίστα Ελέγχου Διάγνωσης

Πριν ανοίξετε ένα ζήτημα υποστήριξης, περάστε από αυτή τη λίστα ελέγχου:

  1. Επιβεβαιώστε ότι το αρχείο είναι πραγματικά PSD/PSB — a PsdLoadException σχετικά με μια μη υποστηριζόμενη έκδοση συνήθως σημαίνει ότι το αρχείο δεν είναι ένα πραγματικό έγγραφο PSD/PSB.
  2. Ελέγξτε για NotSupportedException — ενδέχεται να ορίζετε μία από τις 7 ιδιότητες μόνο για ανάγνωση που αναφέρονται παραπάνω αντί να την διαβάζετε.
  3. Verify Opacity είναι στο εύρος 0-255, όχι 0.0-1.0 ή 0-100.
  4. Κρατήστε τις τιμές συμβολοσειρών κάτω από 255 bytes πριν την αποθήκευση, για να αποφύγετε PsdSaveException.
  5. Call image.Save μετά από κάθε επεξεργασία — αλλαγές σε ένα Layer το instance δεν διατηρείται μέχρι να αποθηκευτεί το έγγραφο.

Δείτε επίσης

 Ελληνικά