Spec-Zone.ru › OpenJDK 21

Класс 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 - не-null массив String с указанием имён форматов. Должно быть представлено по крайней мере одно значение.
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 - boolean указывающий, может ли объект метаданных потока использовать деревья, описываемые стандартным форматом метаданных.
nativeStreamMetadataFormatName - String, или null, для возврата из getNativeStreamMetadataFormatName.
nativeStreamMetadataFormatClassName - String, или null, используемый для создания объекта формата метаданных, возвращаемого из getNativeStreamMetadataFormat.
extraStreamMetadataFormatNames - массив String или null, возвращаемый из getExtraStreamMetadataFormatNames . Массив длиной 0 нормализуется до null.
extraStreamMetadataFormatClassNames - массив String или null, используемый для создания объекта формата метаданных, возвращаемого из getStreamMetadataFormat. Массив длиной 0 нормализуется до null.
supportsStandardImageMetadataFormat - boolean указывающий, может ли объект метаданных изображения использовать деревья, описываемые стандартным форматом метаданных.
nativeImageMetadataFormatName - String, или null, возвращаемый из getNativeImageMetadataFormatName.
nativeImageMetadataFormatClassName - String, или 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, связанного с этим поставщиком услуг.
Parameters:
writer - экземпляр ImageWriter.
Returns:
true, если writer распознан
Throws:
IllegalArgumentException - если writer null.

getImageReaderSpiNames

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

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

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

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

© 1993, 2023, 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/21/docs/api/java.desktop/javax/imageio/spi/ImageWriterSpi.html

Spec-Zone.ru

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