Класс 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 Устарело. Вместо использования этого поля, создайте эквивалентный массив |
Поля, унаследованные от класса 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) Создаёт |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
abstract boolean |
canEncodeImage(ImageTypeSpecifier type) Возвращает |
boolean |
canEncodeImage(RenderedImage im) Возвращает |
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, как не-nullString. -
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()
Возвращает массив Strings, содержащий все полные имена всех ImageReaderSpi классов, которые могут понимать внутреннее представление метаданных, используемое ImageWriter для этого поставщика услуг, или null, если таких ImageReaders нет. Если возвращается значение отличное от null, оно должно иметь ненулевую длину.
Первый элемент массива должен быть именем поставщика услуг для «предпочтительного» читателя, так как он будет использован для создания ImageReader возвращаемого ImageIO.getImageReader(ImageWriter).
Этот механизм может быть использован для получения ImageReaders, которые будут генерировать метаданные, не являющиеся пиксельными (см. IIOExtraDataInfo), в структуре, понятной ImageWriter. Прочитав изображение и получив эти данные из одного из ImageReaders полученных этим методом и передав их ImageWriter, программа-клиент может прочитать изображение, изменить его каким-либо образом и записать обратно, сохранив все метаданные, не имея необходимости понимать внутреннюю структуру метаданных или даже формат изображения.
- Возвращает:
- массив
Strings длиной не менее 1, содержащий именаImageReaderSpis, или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.