Rozwiązywanie problemów Aspose.PSD FOSS for .NET
Rozwiązywanie problemów Aspose.PSD FOSS dla .NET
Ta strona opisuje najczęstsze problemy napotykane podczas ładowania, przeglądania i zapisywania dokumentów PSD/PSB przy użyciu Aspose.PSD FOSS dla .NET.
Problemy z ładowaniem
PsdLoadException z komunikatem o nieobsługiwanej wersji
Pole wersji PSD zadeklarowane w pliku nie jest ani standardową wersją PSD, ani wartością PSB dla dużych dokumentów. Upewnij się, że plik jest autentycznym, nieuszkodzonym dokumentem PSD/PSB przed jego załadowaniem:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Not a valid PSD/PSB file: {ex.Message}");
}PsdLoadException o długości sekcji przekraczającej granicę
Wewnętrzne pola długości w pliku są niezgodne z jego rzeczywistym rozmiarem — zazwyczaj oznacza to, że plik jest obcięty lub uszkodzony, a nie że używa nieobsługiwanej, ale w innym przypadku prawidłowej struktury. Wyeksportuj ponownie plik z aplikacji źródłowej i spróbuj ponownie.
Problemy z zapisywaniem
PsdSaveException dotyczący długości łańcucha Pascal
Wartość łańcucha — najczęściej nazwa warstwy lub zasobu — przekracza 255 bajtów, co jest maksymalnym rozmiarem, jaki może zakodować pole Pascal w formacie PSD:
layer.Name = layer.Name.Length > 255 ? layer.Name[..255] : layer.Name;
image.Save("output.psd");Problemy z edycją
NotSupportedException podczas ustawiania właściwości
W tej wersji FOSS kilka właściwości jest tylko do odczytu. W PsdImage: ActiveLayer, ImageResources, GlobalLayerResources, HasTransparencyData. W Layer: ChannelInformation, LayerMaskData, LayerBlendingRangesData. Traktuj je jako tylko do odczytu — nie przypisuj im wartości.
Krycie warstwy wygląda nieprawidłowo po jego ustawieniu
Layer.Opacity jest byte w zakresie 0-255, nie ułamkiem 0.0-1.0 ani procentem:
layer.Opacity = 200; // approximately 78% opaque, not 200%Usunięcie warstwy nie przynosi efektu
PsdImage.Layers ma działający setter na poziomie kolekcji, ale poszczególne elementy tablicy nie mogą być po prostu usunięte w miejscu — przypisz ponownie całą przefiltrowaną tablicę:
image.Layers = image.Layers.Where(l => l.Name != "Unwanted Layer").ToArray();Problemy z instalacją
Nie znaleziono pakietu
Potwierdź dokładną tożsamość pakietu:
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildChecklista diagnostyczna
Przed otwarciem zgłoszenia wsparcia, przejrzyj tę listę kontrolną:
- Potwierdź, że plik jest rzeczywiście PSD/PSB — a
PsdLoadExceptioninformacja o nieobsługiwanej wersji zazwyczaj oznacza, że plik nie jest prawdziwym dokumentem PSD/PSB. - Sprawdź
NotSupportedException— możesz ustawiać jedną z 7 właściwości tylko do odczytu wymienionych powyżej zamiast ją odczytywać. - Verify
Opacitymieści się w zakresie 0-255, nie 0.0-1.0 ani 0-100. - Utrzymuj wartości ciągów poniżej 255 bajtów przed zapisem, aby uniknąć
PsdSaveException. - Call
image.Savepo każdej edycji — zmiany wLayerinstancje nie są zachowywane, dopóki dokument nie zostanie zapisany.