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