Spec-Zone.ru › OpenJDK 25

Класс ImageWriterSpi

java.lang.Object
javax.imageio.spi.IIOServiceProvider
javax.imageio.spi.ImageReaderWriterSpi
javax.imageio.spi.ImageWriterSpi
Все реализованные интерфейсы:
RegisterableService
public abstract class ImageWriterSpi extends ImageReaderWriterSpi
Интерфейс поставщика службы (SPI) для ImageWriters. Дополнительные сведения о классах поставщиков служб см. в комментарии к классу IIORegistry.

Каждый ImageWriterSpi предоставляет несколько типов сведений о связанном с ним классе ImageWriter.

Имя поставщика, определившего класс SPI, и краткое описание класса можно получить с помощью методов getVendorName, getDescription и getVersion. Эти методы можно интернационализировать для получения локализованного вывода. Они предназначены главным образом для предоставления краткой информации, удобной для чтения человеком и пригодной, например, для упорядочивания всплывающего меню или другого списка.

Списки имен форматов, расширений файлов и типов MIME, связанных со службой, можно получить с помощью методов getFormatNames, getFileSuffixes и getMIMEType. Эти методы можно использовать для определения подходящих кандидатов ImageWriters для записи определенного файла или потока на основе выбора формата пользователем, имени файла или соответствия MIME.

Более надежный способ определить, какие ImageWriters могут обработать определенный поток данных, предоставляет метод canEncodeImage. Этот метод позволяет поставщику службы проверять фактическое содержимое изображения.

Наконец, экземпляр класса ImageWriter, связанного с этим поставщиком службы, можно получить, вызвав метод createWriterInstance. Любую ресурсоемкую инициализацию, например загрузку собственных библиотек или создание больших таблиц, следует отложить как минимум до первого вызова этого метода.

См. также:
  • IIORegistry
  • ImageTypeSpecifier
  • ImageWriter

Краткое описание полей

Модификатор и тип Поле Описание
protected Class<?>[] outputTypes
Массив объектов Class, возвращаемый методом getOutputTypes; изначально равен null.
protected String[] readerSpiNames
Массив строк, возвращаемый методом getImageReaderSpiNames; изначально равен null.
static final Class<?>[] STANDARD_OUTPUT_TYPE
Устарело.
Вместо использования этого поля создайте непосредственно эквивалентный массив { ImageOutputStream.class }.

Поля, объявленные в классе ImageReaderWriterSpi

extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat

Поля, объявленные в классе IIOServiceProvider

vendorName, version

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

ImageWriterSpi()
ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class<?>[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Модификатор Конструктор Описание
protected
Создает пустой ImageWriterSpi.
Создает ImageWriterSpi с заданным набором значений.

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

Модификатор и тип Метод Описание
boolean canEncodeImage(RenderedImage im)
Возвращает true, если реализация ImageWriter, связанная с этим поставщиком службы, может кодировать заданный экземпляр RenderedImage.
abstract boolean canEncodeImage(ImageTypeSpecifier type)
Возвращает true, если реализация ImageWriter, связанная с этим поставщиком службы, может кодировать изображение с заданной компоновкой.
ImageWriter createWriterInstance()
Возвращает экземпляр реализации ImageWriter, связанной с этим поставщиком службы.
abstract ImageWriter createWriterInstance(Object extension)
Возвращает экземпляр реализации ImageWriter, связанной с этим поставщиком службы.
String[] getImageReaderSpiNames()
Возвращает массив Strings, содержащий полные имена всех классов ImageReaderSpi, которые могут распознавать внутреннее представление метаданных, используемое объектом ImageWriter, связанным с этим поставщиком службы, или null, если такие ImageReaders не указаны.
Class<?>[] getOutputTypes()
Возвращает массив объектов Class, указывающих типы объектов, которые можно передавать в качестве аргументов методу setOutput средства записи.
boolean isFormatLossless()
Возвращает true, если формат, в который выполняет запись это средство записи, сохраняет данные пикселей с побитовой точностью.
boolean isOwnWriter(ImageWriter writer)
Возвращает true, если переданный объект ImageWriter является экземпляром ImageWriter, связанного с этим поставщиком службы.

Методы, объявленные в классе ImageReaderWriterSpi

getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported

Методы, объявленные в классе IIOServiceProvider

getDescription, getVendorName, getVersion, onDeregistration, onRegistration

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

STANDARD_OUTPUT_TYPE

@Deprecated public static final Class<?>[] STANDARD_OUTPUT_TYPE
Устарело.
Вместо использования этого поля создайте непосредственно эквивалентный массив { ImageOutputStream.class }.
Одноэлементный массив, изначально содержащий ImageOutputStream.class, который возвращается методом getOutputTypes.

outputTypes

protected Class<?>[] outputTypes
Массив объектов Class, возвращаемый методом getOutputTypes; изначально равен null.

readerSpiNames

protected String[] readerSpiNames
Массив строк, возвращаемый методом getImageReaderSpiNames; изначально равен null.

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

ImageWriterSpi

protected ImageWriterSpi()
Создает пустой ImageWriterSpi. Подкласс должен инициализировать переменные экземпляра и/или переопределить реализации методов, чтобы предоставить работоспособные версии всех методов.

ImageWriterSpi

public ImageWriterSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String writerClassName, Class<?>[] outputTypes, String[] readerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Создает ImageWriterSpi с заданным набором значений.
Параметры:
vendorName — имя поставщика в виде не-null String.
version — идентификатор версии в виде не-null String.
names — не-null массив Strings, содержащий имена форматов. Необходимо указать как минимум одну запись.
suffixes — массив Strings, содержащий распространенные расширения файлов. Если расширения не определены, следует передать null. Массив нулевой длины будет нормализован до null.
MIMETypes — массив Strings, содержащий типы MIME формата. Если расширения не определены, следует передать null. Массив нулевой длины будет нормализован до null.
writerClassName — полное имя связанного класса ImageWriterSpi в виде не-null String.
outputTypes — массив объектов Class длиной не менее 1, указывающий допустимые типы вывода.
readerSpiNames — массив Strings длиной не менее 1, содержащий имена классов всех связанных ImageReaders, либо null. Массив нулевой длины нормализуется до null.
supportsStandardStreamMetadataFormat — boolean, указывающий, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных.
nativeStreamMetadataFormatName — String или null, возвращаемый методом getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName — String или null, используемый для создания объекта формата метаданных, возвращаемого методом getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames — массив Strings или null, возвращаемый методом getExtraStreamMetadataFormatNames. Массив нулевой длины нормализуется до null.
extraStreamMetadataFormatClassNames — массив Strings или null, используемый для создания объекта формата метаданных, возвращаемого методом getStreamMetadataFormat. Массив нулевой длины нормализуется до null.
supportsStandardImageMetadataFormat — boolean, указывающий, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных.
nativeImageMetadataFormatName — String или null, возвращаемый методом getNativeImageMetadataFormatName.
nativeImageMetadataFormatClassName — String или null, используемый для создания объекта формата метаданных, возвращаемого методом getNativeImageMetadataFormat.
extraImageMetadataFormatNames — массив Strings, возвращаемый методом getExtraImageMetadataFormatNames. Массив нулевой длины нормализуется до null.
extraImageMetadataFormatClassNames — массив Strings или null, используемый для создания объекта формата метаданных, возвращаемого методом getImageMetadataFormat. Массив нулевой длины нормализуется до null.
Вызывает исключения:
IllegalArgumentException — если vendorName равен null.
IllegalArgumentException — если version равен null.
IllegalArgumentException — если names равен null или имеет нулевую длину.
IllegalArgumentException — если writerClassName равен null.
IllegalArgumentException — если outputTypes равен null или имеет нулевую длину.

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

isFormatLossless

public boolean isFormatLossless()
Возвращает true, если формат, в который выполняет запись это средство записи, сохраняет данные пикселей с побитовой точностью. Реализация по умолчанию возвращает true.
Возвращает:
true, если формат сохраняет полную точность данных пикселей.

getOutputTypes

public Class<?>[] getOutputTypes()
Возвращает массив объектов Class, указывающих типы объектов, которые можно передавать в качестве аргументов методу setOutput средства записи.

Для большинства средств записи, выполняющих вывод только в ImageOutputStream, следует возвращать одноэлементный массив, содержащий ImageOutputStream.class.

Возвращает:
не-null массив объектов Class длиной не менее 1.

canEncodeImage

public abstract boolean canEncodeImage(ImageTypeSpecifier type)
Возвращает true, если реализация ImageWriter, связанная с этим поставщиком службы, может кодировать изображение с заданной компоновкой. Компоновка (то есть SampleModel и ColorModel изображения) описывается объектом ImageTypeSpecifier.

Возвращаемое значение true не является абсолютной гарантией успешного кодирования: в процессе кодирования все еще могут возникнуть ошибки, например из-за ошибок ввода-вывода, несогласованных или некорректных структур данных и т. д. Предполагается, что будет выполнена разумная проверка базовой структуры изображения, чтобы определить, соответствует ли оно возможностям формата кодирования. Например, поставщик службы для формата, который поддерживает кодирование только изображений в оттенках серого, вернет false, если ему передать BufferedImage RGB. Аналогично, поставщик службы для формата, поддерживающего кодирование изображений RGB с глубиной 8 бит, может отказаться кодировать изображение со связанной альфа-областью.

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

Параметры:
type — ImageTypeSpecifier, задающий компоновку записываемого изображения.
Возвращает:
true, если это средство записи, вероятно, сможет кодировать изображения с заданной компоновкой.
Вызывает исключения:
IllegalArgumentException — если type равен null.

canEncodeImage

public boolean canEncodeImage(RenderedImage im)
Возвращает true, если реализация ImageWriter, связанная с этим поставщиком службы, может кодировать переданный экземпляр RenderedImage. Обратите внимание, что сюда входят экземпляры java.awt.image.BufferedImage.

Сведения о семантике этого метода см. в описании canEncodeImage(ImageTypeSpecifier).

Параметры:
im — экземпляр RenderedImage для кодирования.
Возвращает:
true, если это средство записи, вероятно, сможет кодировать данное изображение.
Вызывает исключения:
IllegalArgumentException — если im равен null.

createWriterInstance

public ImageWriter createWriterInstance() throws IOException
Возвращает экземпляр реализации ImageWriter, связанной с этим поставщиком службы. Изначально возвращаемый объект находится в начальном состоянии, как если бы был вызван его метод reset.

Реализация по умолчанию просто возвращает createWriterInstance(null).

Возвращает:
экземпляр ImageWriter.
Вызывает исключения:
IOException — если при загрузке или инициализации класса средства записи, а также при создании или инициализации объекта средства записи возникает ошибка.

createWriterInstance

public abstract ImageWriter createWriterInstance(Object extension) throws IOException
Возвращает экземпляр реализации ImageWriter, связанной с этим поставщиком службы. Изначально возвращаемый объект находится в начальном состоянии, как если бы был вызван его метод reset.

При создании подключаемому модулю можно передать Object. Тип этого объекта полностью зависит от подключаемого модуля.

Как правило, подключаемый модуль реализует этот метод с помощью кода, например return new MyImageWriter(this).

Параметры:
extension — объект расширения, специфичный для подключаемого модуля; может быть равен null.
Возвращает:
экземпляр ImageWriter.
Вызывает исключения:
IOException — если не удалось создать средство записи.
IllegalArgumentException — если конструктор ImageWriter выбрасывает IllegalArgumentException, указывая на непригодность объекта расширения.

isOwnWriter

public boolean isOwnWriter(ImageWriter writer)
Возвращает true, если переданный объект ImageWriter является экземпляром ImageWriter, связанного с этим поставщиком службы.
Параметры:
writer — экземпляр ImageWriter.
Возвращает:
true, если writer распознан
Вызывает исключения:
IllegalArgumentException — если writer равен null.

getImageReaderSpiNames

public String[] getImageReaderSpiNames()
Возвращает массив Strings, содержащий полные имена всех классов ImageReaderSpi, которые могут распознавать внутреннее представление метаданных, используемое объектом ImageWriter, связанным с этим поставщиком службы, либо null, если такие ImageReaders не указаны. Если возвращается значение, отличное от null, массив должен иметь ненулевую длину.

Первый элемент массива должен содержать имя поставщика службы для «предпочтительного» средства чтения, так как оно будет использоваться для создания ImageReader, возвращаемого методом ImageIO.getImageReader(ImageWriter).

Этот механизм можно использовать для получения ImageReaders, которые будут создавать метаданные без данных пикселей (см. IIOExtraDataInfo) в структуре, понятной объекту ImageWriter. Прочитав изображение, получив эти данные из одного из ImageReaders, найденных с помощью этого метода, и передав их объекту ImageWriter, клиентская программа может прочитать изображение, изменить его и записать обратно, сохранив все метаданные, не разбираясь ни во внутренней структуре метаданных, ни даже в формате изображения.

Возвращает:
массив Strings длиной не менее 1, содержащий имена ImageReaderSpis, либо null.
См. также:
  • ImageIO.getImageReader(ImageWriter)
  • ImageReaderSpi.getImageWriterSpiNames()

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/spi/ImageWriterSpi.html

Spec-Zone.ru

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