Jak pracować z Aspose.PSD FOSS Core API w .NET

Jak pracować z Aspose.PSD FOSS Core API w .NET

Aspose.PSD FOSS for .NET ładuje i przegląda strukturę dokumentu PSD/PSB poprzez PsdImage, podklasę Image. Ten artykuł opisuje ładowanie dokumentu, odczytywanie jego nagłówka i zasobów obrazów oraz zapisywanie go z powrotem na dysk.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Krok 2: Zaimportuj wymagane klasy

using Aspose.PSD.FileFormats.Psd;

Krok 3: Załaduj dokument PSD/PSB

PsdImage.Load otwiera dokument z ścieżki pliku lub strumienia:

using var image = PsdImage.Load("input.psd");

Krok 4: Sprawdź nagłówek dokumentu

PsdImage udostępnia pola nagłówka odczytane z przetworzonego dokumentu: Width, Height, BitsPerChannel, ColorMode (wartość ColorModes), oraz Compression (wartość CompressionMethod):

Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}");   // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");

Wartości ColorModes obejmują Bitmap, Grayscale, Indexed, Rgb i Cmyk, między innymi (Multichannel, Duotone, Lab). Wartości CompressionMethod to Raw, RLE, ZipWithoutPrediction oraz wariant ZIP-z-predykcją.


Krok 5: Odczytaj bloki zasobów obrazu

ImageResources zwraca przetworzone wpisy ResourceBlock dokumentu. Każdy blok udostępnia ID, Name oraz Size:

foreach (var resource in image.ImageResources)
{
    Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}

ImageResources jest tylko do odczytu w tej wersji FOSS — próba przypisania do niego powoduje błąd NotSupportedException (zobacz Znane ograniczenia w FAQ).


Krok 6: Zapisz dokument

image.Save("output.psd");

Typowe problemy i rozwiązania

PsdLoadException podczas ładowania pliku. Wejście nie jest prawidłowym dokumentem PSD/PSB lub jego nagłówek nie przeszedł walidacji. Upewnij się, że plik jest autentycznym plikiem PSD/PSB przed załadowaniem.

NotSupportedException przy ustawianiu ImageResources or GlobalLayerResources. Te settery nie są obsługiwane w tej wersji FOSS. Traktuj ImageResources jako tylko do odczytu.

ColorMode or Compression wyświetla się jako wartość numeryczna zamiast nazwy. Rzutuj właściwość na jej typ wyliczeniowy jawnie, lub użyj .ToString(), aby uzyskać czytelną nazwę (ColorModes.Rgb, nie 3).

Najczęściej zadawane pytania

Czy mogę załadować plik PSD ze strumienia zamiast ze ścieżki pliku?

Tak — PsdImage.Load ma przeciążenie, które przyjmuje Stream.

Czy ImageResources zawiera dane warstw?

Nie. ImageResources zawiera bloki zasobów na poziomie dokumentu (parsowane z sekcji zasobów obrazu PSD). Dane na poziomie warstwy są odczytywane przez PsdImage.Layers — zobacz Praca z warstwami.

Czy PsdImage.Version jest wersją formatu pliku PSD?

Nie. PsdImage.Version zgłasza wewnętrzny numer wersji API zgodny z Aspose.PSD (obecnie 6) — nie ma to związku z tym, czy wczytany plik jest PSD czy PSB.

Zobacz także

 Polski