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

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

Модификатор Конструктор Описание
protected ImageWriterSpi()

Создаёт пустой 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)

Создаёт 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 , связанного с этим поставщиком услуг.

Параметры:
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, 2020, 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/11/docs/api/java.desktop/javax/imageio/spi/ImageWriterSpi.html

Spec-Zone .ru
спецификации, руководства, описания, API