Spec-Zone.ru › OpenJDK 27

Класс ImageWriterSpi

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

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

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

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

Более надежный способ определить, какие ImageWriterы, вероятно, способны анализировать конкретный поток данных, предоставляет метод 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
Модификатор и тип Поле Описание
protected String[] extraImageMetadataFormatClassNames
Массив объектов String, содержащих имена классов любых дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraImageMetadataFormatNames
Массив объектов String, содержащих имена любых дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraStreamMetadataFormatClassNames
Массив объектов String, содержащих имена классов любых дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] extraStreamMetadataFormatNames
Массив объектов String, содержащих имена любых дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null.
protected String[] MIMETypes
Массив строк, возвращаемый методом getMIMETypes; изначально — null.
protected String[] names
Массив строк, возвращаемый методом getFormatNames; изначально — null.
protected String nativeImageMetadataFormatClassName
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeImageMetadataFormatName
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeStreamMetadataFormatClassName
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String nativeStreamMetadataFormatName
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null.
protected String pluginClassName
Объект String, содержащий имя связанного класса подключаемого модуля; изначально — null.
protected String[] suffixes
Массив строк, возвращаемый методом getFileSuffixes; изначально — null.
protected boolean supportsStandardImageMetadataFormat
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных изображений; изначально — false.
protected boolean supportsStandardStreamMetadataFormat
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных потоков; изначально — false.

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

vendorName, version
Модификатор и тип Поле Описание
protected String vendorName
Объект String, возвращаемый методом getVendorName; изначально — null.
protected String version
Объект String, возвращаемый методом getVersion; изначально — null.

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

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()
Возвращает массив объектов String, содержащий полные имена всех классов 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
Модификатор и тип Метод Описание
String[] getExtraImageMetadataFormatNames()
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем.
String[] getExtraStreamMetadataFormatNames()
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем.
String[] getFileSuffixes()
Возвращает массив объектов String, содержащий список расширений файлов, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
String[] getFormatNames()
Возвращает массив объектов String, содержащий понятные человеку имена форматов, обычно используемых реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
IIOMetadataFormat getImageMetadataFormat(String formatName)
Возвращает объект IIOMetadataFormat с описанием заданного формата метаданных изображения или null, если описание недоступно.
String[] getMIMETypes()
Возвращает массив объектов String, содержащий список типов MIME, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы.
String getNativeImageMetadataFormatName()
Возвращает имя «собственного» формата метаданных изображений для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу метаданных изображения, хранящихся в формате, обрабатываемом этим подключаемым модулем, без потерь.
String getNativeStreamMetadataFormatName()
Возвращает имя «собственного» формата метаданных потоков для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу метаданных потока, хранящихся в формате, обрабатываемом этим подключаемым модулем, без потерь.
String getPluginClassName()
Возвращает полное имя класса подключаемого модуля ImageReader или ImageWriter, связанного с этим поставщиком службы.
IIOMetadataFormat getStreamMetadataFormat(String formatName)
Возвращает объект IIOMetadataFormat с описанием заданного формата метаданных потока или null, если описание недоступно.
boolean isStandardImageMetadataFormatSupported()
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем.
boolean isStandardStreamMetadataFormatSupported()
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем.

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

getDescription, getVendorName, getVersion, onDeregistration, onRegistration
Модификатор и тип Метод Описание
abstract String getDescription(Locale locale)
Возвращает краткое, понятное человеку описание этого поставщика службы и связанной с ним реализации.
String getVendorName()
Возвращает название поставщика, ответственного за создание этого поставщика службы и связанной с ним реализации.
String getVersion()
Возвращает строку с описанием номера версии этого поставщика службы и связанной с ним реализации.
void onDeregistration(ServiceRegistry registry, Class<?> category)
Обратный вызов, который выполняется при отмене регистрации класса Spi в ServiceRegistry.
void onRegistration(ServiceRegistry registry, Class<?> category)
Обратный вызов, который выполняется ровно один раз после создания экземпляра класса Spi и его регистрации в ServiceRegistry.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени.

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

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 — массив Strings, не равный null, указывающий имена форматов. Должна присутствовать как минимум одна запись.
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.

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

canEncodeImage

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

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

Разные 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, 2026, 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.

Spec-Zone.ru

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