Modyfikowanie obrazów TIFF

Dodaj ramki z różnymi ustawieniami

TIFF jest formatem bardzo elastycznym, który pozwala dodawać różne ramki o różnych wymiarach, kompresji i innych ustawieniach. Interfejsy API Aspose.PSD umożliwiają dodawanie dowolnej ramki TIFF o dowolnym rozmiarze, co pomaga w tworzeniu złożonych dokumentów. Jeśli istnieje wymaganie dostosowania ramek podczas procesu dodawania, aby stały się one równe, wykonaj następujące kroki:

  • Utwórz nową pustą ramkę z żądanymi opcjami lub skopiuj ramkę źródłową z określonymi opcjami wyjściowymi, korzystając z metody CreateFrameFrom.
  • Zmień rozmiar ramki/obrazu źródłowego na żądane wymiary za pomocą metody Resize.
  • Dodaj piksele ramki/obrazu źródłowego do nowej ramki.
  • Dodaj nową ramkę do obrazu TIFF wynikowego.

Eksportuj warstwy obrazu PSD do formatu pliku Multi-Page Tiff

Czasami konieczne jest wyeksportowanie warstw obrazu PSD do formatu pliku Multi-Page TIFF. Ten artykuł pokaże, jak można wykonać to zadanie za pomocą interfejsu API Aspose.PSD dla .NET. Na początku wczytamy obraz PSD z dysku. Następnie będziemy iterować po warstwach obrazu PSD i tworzyć TiffFrame z odpowiadających warstw. Na koniec zapiszemy rezultujący obraz Tiff w pojedynczym pliku na dysku.

Konfiguracja opcji TiffOptions

Programiści mogą dostosować różne właściwości klasy TiffOptions w celu uzyskania pożądanych wyników. W tym dokumencie skupimy się na 4 głównych właściwościach kontrolujących atrybuty obrazu wynikowego.

Poniżej wymienione są te właściwości.

  1. TiffOptions.Photometric
  2. TiffOptions.Compression
  3. TiffOptions.BitsPerSample
  4. TiffOptions.Predictor

Podczas inicjalizacji pustej struktury TiffOptions, każda opcja jest ustawiona na wartość domyślną, na przykład kompresja jest ustawiona jako Brak, BitsPerSample ustawiony jest na 1, a Photometric na MinIsWhite. Zapisanie w tym formacie spowoduje, że ostateczny obraz będzie czarno-biały, co jest oczekiwanym zachowaniem dla takiej kombinacji opcji. Aby uzyskać kolorowe rezultaty, należy ustawić wszystkie wyżej wymienione właściwości na wartości odpowiadające pożądanemu przestrzeni barwnej lub można zainicjalizować strukturę TiffOptions z ustawieniami predefiniowanymi, o których mowa później w tym artykule. Poniżej przedstawiona jest tabela opisująca oczekiwane wartości parametrów, które można ustawić, aby osiągnąć pożądane wyniki. Należy zauważyć, że wszystkie 4 kolumny powinny być ustawione za pomocą TiffOptions, aby zapisać dowolny obraz w formacie TIFF.

TiffOptions.Photometric TiffOptions.Compression TiffOptions.BitsPerSample TiffOptions.Predictor
Palette LZW/Nieskompresowany 1/4/8/16 (paleta, tryb koloru) tylko pojedynczy kanał Brak
MinIsWhite/MinIsBlack LZW/Nieskompresowany 1/4/8/16 (tryb odcieni szarości) tylko pojedynczy kanał Brak
Paleta LZW/Nieskompresowany 8 (paleta, tryb koloru) tylko pojedynczy kanał Poziomy (większa kompresja jest osiągana dla LZW tych samych wzorców)
MinIsWhite/MinIsBlack LZW/Nieskompresowany 8 (tryb odcieni szarości) tylko pojedynczy kanał Poziomy (większa kompresja jest osiągana dla LZW tych samych wzorców)
RGB LZW/Nieskompresowany [8,8,8] (3 kanały RGB) Brak/Poziomy
RGB LZW/Nieskompresowany [8,8,8,8] (3 kanały RGB i dodatkowy kanał alfa można ustawić za pomocą TiffOptions.AlphaStorage) W rzeczywistości obsługiwana jest dowolna liczba dodatkowych kanałów, ale każdy kanał musi mieć wielkość 8 bitów, np. [8,8,8,8,8,8] Brak/Poziomy
Wszystkie 4 właściwości powinny być ustawione za pomocą TiffOptions, aby zapisać obraz w dowolnym formacie w formacie Tiff. Przy wykorzystaniu różnych kombinacji niektóre przeglądarki (w tym przeglądarka zdjęć systemu Windows) mogą odmówić renderowania wynikowego obrazu ze względu na ograniczoną obsługę, którą oferują. W takim przypadku wybierz inną przeglądarkę do celów testowych.

Predefiniowane ustawienia dla klasy TiffOptions

Aby ułatwić użytkownikom i uniknąć błędów konfiguracji instancji TiffOptions, interfejs API Aspose.PSD dla .NET udostępnił inny konstruktor, który przyjmuje parametr typu TiffExpectedFormat. Na podstawie wybranej wartości z wyliczenia TiffExpectedFormat, interfejs API automatycznie konfiguruje wszystkie obowiązkowe właściwości dla instancji TiffOptions w celu uzyskania pożądanych wyników. Przed przejściem do przykładowego kodu oto lista pól TiffExpectedFormat i ich szczegółów dla lepszego zrozumienia użycia.

  • TiffExpectedFormat.Default: Ustawienie pola na Default zachowuje się podobnie do domyślnego konstruktora klasy TiffOptions bez ustawionej kompresji i BitsPerPixel ustawionego na 1 w celu uzyskania czarno-białego wyniku. Zaleca się korzystanie z tego pola, gdy inne właściwości związane z formatem mają być ustawione ręcznie zgodnie z pożądanymi wynikami.
  • TiffExpectedFormat.TiffCcitRle: Specyficzne dla kodowania RLE podczas zapisywania wyniku w formacie TIFF 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffCcittFax3: Specyficzne dla kodowania CCITT Fax3 podczas zapisywania wyniku w formacie TIFF 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffCcittFax4: Specyficzne dla kodowania CCITT Fax4 podczas zapisywania wyniku w formacie TIFF 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffDeflateBW: Specyficzne dla kompresji Deflate podczas zapisywania wyniku w formacie TIFF 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffDeflateRGB: Specyficzne dla kompresji Deflate podczas zapisywania wyniku w formacie TIFF RGB (kolor).
  • TiffExpectedFormat.TiffJpegRGB: Specyficzne dla kompresji Jpeg podczas zapisywania wyniku w formacie TIFF RGB (kolor).
  • TiffExpectedFormat.TiffJpegYCBCR: Specyficzne dla kompresji Deflate podczas zapisywania wyniku w formacie TIFF YCBCR (kolor).
  • TiffExpectedFormat.TiffLzwBW: Specyficzne dla kompresji LZW podczas zapisywania wyniku w formacie TIFF 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffLzwRGB: Specyficzne dla kompresji LZW podczas zapisywania wyniku w formacie TIFF RGB (kolor).
  • TiffExpectedFormat.TiffLzwRGBA: Specyficzne dla kompresji LZW podczas zapisywania wyniku w formacie TIFF RGBA (kolor z przejrzystością).
  • TiffExpectedFormat.TiffNoCompressionBW: Specyficzne dla niekompresowanego formatu TIFF podczas zapisywania wyniku w formacie 1 BitsPerPixel (czarno-biały).
  • TiffExpectedFormat.TiffNoCompressionRGB: Specyficzne dla niekompresowanego formatu TIFF podczas zapisywania wyniku w formacie RGB (kolor).
  • TiffExpectedFormat.TiffNoCompressionRGBA: Specyficzne dla niekompresowanego formatu TIFF podczas zapisywania wyniku w formacie RGBA (kolor z przejrzystością).

Poniższy fragment kodu wyjaśnia użycie pól TiffExpectedFormat przy tworzeniu instancji klasy TiffOptions.

Obsługa kompresji Deflate i Adobe Deflate

Format pliku TIFF (Tagged Image File Format) obsługuje różne typy kompresji, podczas gdy typ kompresji jest przechowywany jako znacznik (wartość całkowita) w pliku. Jednym z takich metod kompresji jest Adobe Deflate (wcześniej znany jako Deflate). Interfejs API Aspose.PSD dla .NET obsługuje tę metodę kompresji do eksportu i tworzenia obrazów TIFF.

Zapis obrazu do formatu TIFF z kompresją Deflate

Konwersja wczytanych obrazów do formatu TIFF z kompresją Deflate/Adobe Deflate jest łatwa do wykonania.

Tworzenie obrazu TiffImage z kompresją Adobe Deflate

Poniższy przykład demonstruje użycie interfejsu API Aspose.PSD dla .NET do utworzenia obrazu od podstaw za pomocą metody kompresji Adobe Deflate.

Kompresowanie obrazów TIFF

Interfejs API Aspose.PSD dla .NET może być używany do konwersji obrazów PSD do formatu obrazu TIFF oraz zmiany kompresji rezultującego obrazu TIFF. API może być również użyte do przechowywania różnych obrazów jako ramek w obrazie TIFF do celów archiwizacyjnych, przy równoczesnym kompresowaniu obrazów do rozmiaru danych minimalnego. Kompresja obrazu powinna być przeprowadzana poprzez zmniejszenie rozmiaru danych źródłowych, niezależnie od użytego algorytmu kompresji. Aby uzyskać najlepsze współczynniki kompresji, możemy użyć przestrzeni kolorów indeksowanych. Poniższy fragment kodu wykonuje najlepszą kompresję przy użyciu 16 kolorów indeksowanych i algorytmu kompresji LZW, chociaż kolory źródłowe są nieznacznie rozmyte.