Manipulating TIFF Images

Добавление кадров с различными настройками

TIFF - очень гибкий формат, который позволяет добавлять различные кадры с разными размерами, сжатием и другими настройками. API Aspose.PSD позволяет добавлять любой кадр TIFF любого размера, что помогает создавать сложные документы. Если требуется отрегулировать кадры во время добавления, чтобы они стали равными, выполните следующие шаги:

  • Создайте новый пустой кадр с нужными параметрами или скопируйте исходный кадр с указанными параметрами вывода, используя метод CreateFrameFrom.
  • Измените размер исходного кадра/изображения до желаемых размеров, используя метод Resize.
  • Добавьте пиксели исходного кадра/изображения в новый кадр.
  • Добавьте новый кадр в выходное изображение TIFF.

Экспорт слоев изображения PSD в многостраничный формат TIFF

Иногда вам может понадобиться экспортировать слои изображения PSD в формат многостраничного TIFF файла. В этой статье будет продемонстрировано, как можно выполнить эту задачу, используя API Aspose.PSD для Java. Сначала мы загрузим изображение PSD с диска. Затем мы пройдем по слоям изображения PSD и создадим TiffFrame из соответствующих слоев. Наконец, мы сохраним итоговое изображение TIFF в один файл на диске.

Настройка TiffOptions

Разработчики могут настроить различные свойства класса TiffOptions, чтобы получить желаемые результаты. В этом документе мы сосредоточимся на 4 основных свойствах, контролирующих атрибуты итогового изображения.

Эти свойства перечислены ниже.

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

При инициализации пустой структуры TiffOptions каждая опция устанавливается в свое значение по умолчанию, например, сжатие устанавливается как None, BitsPerSample устанавливается как 1, а Photometric как MinIsWhite. Сохранение в этом формате приведет к тому, что окончательное изображение будет черно-белым, что является ожидаемым поведением для таких комбинаций параметров. Чтобы получить цветные результаты, необходимо установить все вышеперечисленные свойства на значения, соответствующие желаемому цветовому пространству, или вы можете инициализировать структуру TiffOptions с предопределенными настройками, как обсуждается позже в этой статье. Ниже приведена таблица, описывающая ожидаемые значения параметра, которые можно установить, чтобы достичь желаемых результатов. Обратите внимание, что все 4 столбца необходимо устанавливать через TiffOptions, чтобы сохранить любой загруженное или созданное изображение в формате TIFF.

 TiffOptions.Photometric TiffOptions.Compression TiffOptions.BitsPerSample TiffOptions.Predictor
Палитра LZW/Без сжатия 1/4/8/16 (палитра, цветовой режим) только один канал Нет
MinIsWhite/MinIsBlack LZW/Без сжатия 1/4/8/16 (оттенки серого) только один канал Нет
Палитра LZW/Без сжатия 8 (палитра, цветовой режим) только один канал Горизонтальный (для LZW достигается большее сжатие при одинаковых паттернах)
MinIsWhite/MinIsBlack LZW/Без сжатия 8 (оттенки серого) только один канал Горизонтальный (для LZW достигается большее сжатие при одинаковых паттернах)
RGB LZW/Без сжатия [8,8,8] (3 канала RGB) Нет/Горизонтальный
RGB LZW/Без сжатия [8,8,8,8] (3 канала RGB и дополнительный альфа-канал может быть установлен через TiffOptions.AlphaStorage) Фактически любое количество дополнительных каналов поддерживается, но каждый канал должен иметь размер 8 бит, например, [8,8,8,8,8,8] Нет/Горизонтальный
Все 4 свойства должны быть установлены через TiffOptions, чтобы сохранить любой формат изображения в формате Tiff. При использовании различных комбинаций некоторые просмотрщики (включая Windows Photo Viewer) могут отказаться отображать итоговое изображение из-за ограниченной поддержки, которую они предлагают. В таком случае, выберите другой просмотрщик для тестирования.

Предварительные настройки для класса TiffOptions

Для облегчения пользователей и избежания неправильной конфигурации экземпляра TiffOptions API Aspose.PSD для Java предоставляет другой конструктор, который принимает параметр типа TiffExpectedFormat. Исходя из выбранного значения из перечисления TiffExpectedFormat, API автоматически настраивает все обязательные свойства для экземпляра TiffOptions, чтобы получить желаемые результаты. Прежде чем мы перейдем к образцовому коду, вот список полей TiffExpectedFormat и их подробности для лучшего понимания использования.

  • TiffExpectedFormat.Default: Установка поля Default действует так же, как конструктор по умолчанию класса TiffOptions с отсутствием сжатия и установкой BitsPerPixel в 1 для получения черно-белого результата. Рекомендуется использовать это поле, когда необходимо установить другие специфические свойства формата вручную в соответствии с желаемыми результатами.
  • TiffExpectedFormat.TiffCcitRle: Специфично для кодирования RLE при сохранении результата в формате TIFF с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffCcittFax3: Специфично для кодирования CCITT Fax3 при сохранении результата в формате TIFF с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffCcittFax4: Специфично для кодирования CCITT Fax4 при сохранении результата в формате TIFF с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffDeflateBW: Специфично для сжатия Deflate при сохранении результата в формате TIFF с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffDeflateRGB: Специфично для сжатия Deflate при сохранении результата в формате TIFF для RGB (цвета).
  • TiffExpectedFormat.TiffJpegRGB: Специфично для сжатия Jpeg при сохранении результата в формате TIFF для RGB (цвета).
  • TiffExpectedFormat.TiffJpegYCBCR: Специфично для сжатия Jpeg при сохранении результата в формате TIFF для YCBCR (цвета).
  • TiffExpectedFormat.TiffLzwBW: Специфично для сжатия LZW при сохранении результата в формате TIFF с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffLzwRGB: Специфично для сжатия LZW при сохранении результата в формате TIFF для RGB (цвета).
  • TiffExpectedFormat.TiffLzwRGBA: Специфично для сжатия LZW при сохранении результата в формате TIFF для RGBA (цвет с прозрачностью).
  • TiffExpectedFormat.TiffNoCompressionBW: Специфично для несжатого формата TIFF при сохранении результата с BitsPerPixel 1 (черно-белый).
  • TiffExpectedFormat.TiffNoCompressionRGB: Специфично для несжатого формата TIFF при сохранении результата для RGB (цвета).
  • TiffExpectedFormat.TiffNoCompressionRGBA: Специфично для несжатого формата TIFF при сохранении результата в RGBA (цвет с прозрачностью).

Следующий фрагмент кода поясняет использование полей TiffExpectedFormat при создании экземпляра класса TiffOptions.

Поддержка сжатия Deflate и Adobe Deflate

Формат файла TIFF (Tagged Image File Format) поддерживает различные типы сжатия, при этом тип сжатия сохраняется как тег (целочисленное значение) в файле. Одним из таких методов сжатия является Adobe Deflate (ранее известный как Deflate). API Aspose.PSD для Java поддерживает этот метод сжатия для экспорта и создания изображений TIFF.

Сохранение изображения в TIFF с сжатием Deflate

Конвертирование загруженных изображений в TIFF с сжатием Deflate/Adobe Deflate очень просто.

Создание TiffImage с сжатием Adobe Deflate

Ниже предоставленный образец демонстрирует использование API Aspose.PSD для Java для создания изображения с нуля с использованием метода сжатия Adobe Deflate.

Сжатие изображений TIFF

API Aspose.PSD для Java можно использовать для преобразования изображений PSD в формат изображения TIFF и даже изменения сжатия результирующего изображения TIFF. API также может использоваться для сохранения различных изображений как кадров в изображении TIFF для архивирования, при этом сжимая изображения до минимального размера данных. Сжатие изображения в любом случае должно выполняться путем уменьшения размера исходных данных независимо от используемого алгоритма сжатия. Для достижения лучшего соотношения сжатия можно использовать индексированные цветовые пространства. Предоставленный ниже фрагмент кода сжимает изображение с использованием 16 индексированных цветов и алгоритма сжатия LZW, при этом исходные цвета немного диффузированы.