Класс 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 | Массив объектов |
protected String[] | readerSpiNames | Массив строк, которые должны возвращаться методом |
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(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) | Создаёт |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean | canEncodeImage(RenderedImage im) | Возвращает |
abstract boolean | canEncodeImage(ImageTypeSpecifier type) | Возвращает |
ImageWriter | createWriterInstance() | Возвращает экземпляр реализации |
abstract ImageWriter | createWriterInstance(Object extension) | Возвращает экземпляр реализации |
String[] | getImageReaderSpiNames() | Возвращает массив |
Class<?>[] | getOutputTypes() | Возвращает массив объектов |
boolean | isFormatLossless() | Возвращает |
boolean | isOwnWriter(ImageWriter writer) | Возвращает |
Методы, объявленные в классе 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- имя поставщика в виде не-nullString. -
version- идентификатор версии в виде не-nullString. -
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