Spec-Zone.ru › OpenJDK 24

Класс 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 }.

Поля, объявленные в классе javax.imageio.spi.ImageReaderWriterSpi

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

Поля, объявленные в классе javax.imageio.spi.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()
Возвращает массив String, содержащий все полные квалифицированные имена всех классов ImageReaderSpi, которые могут понимать внутреннее представление метаданных, используемое ImageWriter, связанным с этим поставщиком сервиса, или null, если таких ImageReaders нет.
Class<?>[] getOutputTypes()
Возвращает массив объектов Class, указывающих, какие типы объектов могут быть использованы в качестве аргументов для метода setOutput записывателя.
boolean isFormatLossless()
Возвращает true, если формат, выводимый этим записывателем, сохраняет данные пикселей с точностью до бита.
boolean isOwnWriter(ImageWriter writer)
Возвращает true, если объект ImageWriter является экземпляром ImageWriter, связанного с этим поставщиком сервиса.

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

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

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

getDescription, getVendorName, getVersion, onDeregistration, onRegistration

Методы, объявленные в классе java.lang.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 - массив String, указывающих имена форматов, без null. Должен содержать хотя бы один элемент.
suffixes - массив String, указывающих общие расширения файлов. Если расширения не заданы, должен быть указан null. Массив длиной 0 будет нормализован до null.
MIMETypes - массив String, указывающих MIME-типы формата. Если расширения не заданы, должен быть указан null. Массив длиной 0 будет нормализован до null.
writerClassName - полное имя связанного класса ImageWriterSpi, как не-null String.
outputTypes - массив объектов Class длиной не менее 1, указывающих допустимые типы вывода.
readerSpiNames - массив String длиной не менее 1, называющий классы всех связанных ImageReader или null. Массив длиной 0 нормализуется до null.
supportsStandardStreamMetadataFormat - значение, указывающее, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных.
nativeStreamMetadataFormatName - значение, или null, возвращаемое методом getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName - значение, или null, используемое для создания объекта формата метаданных, возвращаемого методом getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames - массив String или null, возвращаемый методом getExtraStreamMetadataFormatNames. Массив длиной 0 нормализуется до null.
extraStreamMetadataFormatClassNames - массив String или null, используемый для создания объекта формата метаданных, возвращаемого методом getStreamMetadataFormat. Массив длиной 0 нормализуется до null.
supportsStandardImageMetadataFormat - значение, указывающее, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных.
nativeImageMetadataFormatName - значение, или null, возвращаемое методом getNativeImageMetadataFormatName.
nativeImageMetadataFormatClassName - значение, или null, используемое для создания объекта формата метаданных, возвращаемого методом getNativeImageMetadataFormat.
extraImageMetadataFormatNames - массив String, возвращаемый методом getExtraImageMetadataFormatNames. Массив длиной 0 нормализуется до null.
extraImageMetadataFormatClassNames - массив String или null, используемый для создания объекта формата метаданных, возвращаемого методом getImageMetadataFormat. Массив длиной 0 нормализуется до null.
Исключения:
IllegalArgumentException - если vendorName имеет значение null.
IllegalArgumentException - если version имеет значение null.
IllegalArgumentException - если names имеет значение null или его длина равна 0.
IllegalArgumentException - если writerClassName имеет значение null.
IllegalArgumentException - если outputTypes имеет значение null или его длина равна 0.

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

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, если ему передадут RGB BufferedImage. Аналогично, поставщик услуг для формата, который может кодировать 8-битные RGB изображения, может отказаться от кодирования изображения с ассоциированным альфа-каналом.

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

Параметры:
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()
Возвращает массив String, содержащий все полные квалифицированные имена всех классов ImageReaderSpi, которые могут понимать внутреннее представление метаданных, используемое ImageWriter, связанным с этим поставщиком услуг, или null, если таких ImageReaders нет. Если возвращается значение, отличное от null, оно должно иметь ненулевую длину.

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

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

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

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

Spec-Zone.ru

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