Интерфейс ImageTranscoder
- Все известные реализующие классы:
ImageWriter
public interface ImageTranscoder
Любой образ может быть транскодирован (записан в формате, отличном от исходного) просто путем выполнения операции чтения, за которой следует операция записи. Однако в этом процессе возможна потеря данных из-за различий в форматах.
В общем случае лучшие результаты будут достигнуты, когда для каждого формата можно создать объекты метаданных, которые будут содержать как можно больше информации об изображении и связанных с ним метаданных, понятных конкретному ImageWriter, используемому для кодирования.
Можно использовать ImageTranscoder для преобразования IIOMetadata объектов, предоставляемых ImageReader (представляющих метаданные для каждого потока и каждого изображения), в соответствующие объекты, подходящие для кодирования конкретным ImageWriter. В случае, когда методы этого интерфейса вызываются непосредственно на ImageWriter, результат будет пригоден для этого записывателя.
Внутренние детали преобразования объекта IIOMetadata в формат, специфичный для записывателя, будут варьироваться в зависимости от контекста операции. Как правило, ImageWriter будет проверять входящий объект, чтобы определить, реализует ли он дополнительные интерфейсы, с которыми записыватель знаком. Это может быть, например, если объект был получен путем операции чтения из плагина-читателя, написанного тем же поставщиком, что и записыватель. В этом случае записыватель может получить доступ к входящему объекту с помощью специфичных для плагина интерфейсов. В этом случае повторное кодирование может быть близким к безпотери, если формат файла изображения остается неизменным. Если формат меняется, записыватель всё равно может попытаться сохранить как можно больше информации.
Если входящий объект не реализует какие-либо дополнительные интерфейсы, известные записывателю, записыватель не имеет выбора, кроме как получить доступ к нему через стандартные IIOMetadata интерфейсы, такие как представление дерева, предоставляемое IIOMetadata.getAsTree. В этом случае, вероятно, произойдёт значительная потеря информации.
Независимый ImageTranscoder по сути выполняет ту же роль, что и плагин-записыватель в вышеприведённых примерах. Он должен быть знаком с частными интерфейсами, используемыми как плагином-читателем, так и плагином-записывателем, и вручную создать объект, который будет пригоден для использования записывателем. Полученные объекты метаданных могут быть использованы записывателем напрямую.
Независимые реализации ImageTranscoder не предоставляются в рамках стандартного API. Вместо этого, целью этого интерфейса является предоставление способа создания и обнаружения реализаций приложениями по мере необходимости.
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
IIOMetadata |
convertImageMetadata |
Возвращает объект IIOMetadata, который может быть использован для кодирования и, при необходимости, изменён с помощью его интерфейсов документов или других интерфейсов, специфичных для плагина записывателя, который будет использован для кодирования. |
IIOMetadata |
convertStreamMetadata |
Возвращает объект 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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/imageio/ImageTranscoder.html