Spec-Zone.ru › OpenJDK 21

Интерфейс ImageTranscoder

Все известные реализующие классы:
ImageWriter
public interface ImageTranscoder
Интерфейс, предоставляющий возможности транскодирования метаданных.

Любое изображение может быть транскодировано (записано в формате, отличном от исходного) просто путем выполнения операции чтения, за которой следует операция записи. Однако в этом процессе может произойти потеря данных из-за различий в форматах.

В общем случае лучшие результаты будут достигнуты, когда будут созданы объекты метаданных, специфичные для формата, которые будут содержать как можно больше информации об изображении и его связанных метаданных, понятных для конкретного ImageWriter используемого для кодирования.

Может быть использован ImageTranscoder для преобразования IIOMetadata объектов, предоставляемых ImageReader (представляющие метаданные по потоку и по изображению), в соответствующие объекты, подходящие для кодирования конкретным ImageWriter. В случае, когда методы этого интерфейса вызываются непосредственно на ImageWriter, вывод будет подходящим для этого записывающего модуля.

Внутренние детали преобразования объекта IIOMetadata в формат, специфичный для записывающего модуля, будут зависеть от контекста операции. Как правило, ImageWriter будет проверять входящий объект на предмет реализации дополнительных интерфейсов, с которыми записывающий модуль знаком. Такое может быть, например, если объект был получен посредством операции чтения из плагина-ридера, написанного тем же производителем, что и плагин-записыватель. В этом случае записывающий модуль может получить доступ к входящему объекту с помощью интерфейсов, специфичных для плагина. В этом случае повторное кодирование может быть близким к безпотери, если формат файла изображения остается неизменным. Если формат изменяется, записывающий модуль по-прежнему может попытаться сохранить как можно больше информации.

Если входящий объект не реализует дополнительных интерфейсов, известных записывающему модулю, записывающему модулю остается только получить доступ к нему через стандартные IIOMetadata интерфейсы, такие как представление дерева, предоставляемое IIOMetadata.getAsTree. В этом случае, вероятно, произойдёт значительная потеря информации.

Независимый ImageTranscoder по сути играет ту же роль, что и плагин-записыватель в приведенных выше примерах. Он должен быть знаком с закрытыми интерфейсами, используемыми как плагинами-ридерами, так и плагинами-записывателями, и вручную создавать объект, который будет пригоден для использования записывающим модулем. Полученные объекты метаданных могут быть использованы записывающим модулем непосредственно.

Независимые реализации ImageTranscoder не предоставляются в стандартном API. Вместо этого цель этого интерфейса – предоставить способ для создания и обнаружения реализаций приложениями по мере необходимости.

Краткое описание методов

Модификатор и тип Метод Описание
IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param)
Возвращает объект IIOMetadata, который может быть использован для кодирования и, по желанию, изменён с помощью его интерфейсов документа или других интерфейсов, специфичных для плагина записывателя, который будет использован для кодирования.
IIOMetadata convertStreamMetadata(IIOMetadata inData, ImageWriteParam param)
Возвращает объект IIOMetadata, который может быть использован для кодирования и, по желанию, изменён с помощью его интерфейсов документа или других интерфейсов, специфичных для плагина записывателя, который будет использован для кодирования.

Подробное описание методов

convertStreamMetadata

IIOMetadata convertStreamMetadata(IIOMetadata inData, ImageWriteParam param)
Возвращает объект IIOMetadata, который может быть использован для кодирования и, по желанию, изменён с помощью его интерфейсов документа или других интерфейсов, специфичных для плагина записывателя, который будет использован для кодирования.

Необязательный ImageWriteParam может быть передан в случаях, когда он может повлиять на структуру метаданных потока.

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

Параметры:
inData - объект IIOMetadata, представляющий метаданные потока, используемый для инициализации состояния возвращаемого объекта.
param - объект ImageWriteParam, который будет использован для кодирования изображения, или null.
Возвращает:
объект IIOMetadata, или null, если плагин не предоставляет возможности кодирования метаданных.
Выбрасывает:
IllegalArgumentException - если inData является null.

convertImageMetadata

IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param)
Возвращает объект IIOMetadata, который может быть использован для кодирования и, по желанию, изменён с помощью его интерфейсов документа или других интерфейсов, специфичных для плагина записывателя, который будет использован для кодирования.

Необязательный ImageWriteParam может быть передан в случаях, когда он может повлиять на структуру метаданных изображения.

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

Параметры:
inData - объект IIOMetadata, представляющий метаданные изображения, используемый для инициализации состояния возвращаемого объекта.
imageType - объект ImageTypeSpecifier, указывающий расположение и цветовую информацию изображения, с которым будут связаны метаданные.
param - объект ImageWriteParam, который будет использован для кодирования изображения, или null.
Возвращает:
объект IIOMetadata, или null, если плагин не предоставляет возможности кодирования метаданных.
Выбрасывает:
IllegalArgumentException - если любой из inData или imageType является null.

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/imageio/ImageTranscoder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API