Rozwiązywanie problemów Aspose.PSD FOSS for .NET

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 build

Checklista diagnostyczna

Przed otwarciem zgłoszenia wsparcia, przejrzyj tę listę kontrolną:

  1. Potwierdź, że plik jest rzeczywiście PSD/PSB — a PsdLoadException informacja o nieobsługiwanej wersji zazwyczaj oznacza, że plik nie jest prawdziwym dokumentem PSD/PSB.
  2. Sprawdź NotSupportedException — możesz ustawiać jedną z 7 właściwości tylko do odczytu wymienionych powyżej zamiast ją odczytywać.
  3. Verify Opacity mieści się w zakresie 0-255, nie 0.0-1.0 ani 0-100.
  4. Utrzymuj wartości ciągów poniżej 255 bajtów przed zapisem, aby uniknąć PsdSaveException.
  5. Call image.Save po każdej edycji — zmiany w Layer instancje nie są zachowywane, dopóki dokument nie zostanie zapisany.

Zobacz także

 Polski