Класс ImageWriterSpi
- Все реализуемые интерфейсы:
RegisterableService
public abstract class ImageWriterSpi extends ImageReaderWriterSpi
ImageWriter. Дополнительную информацию о классах поставщиков услуг см. в комментарии к классу IIORegistry. Каждый ImageWriterSpi предоставляет несколько типов информации о классе ImageWriter, с которым он связан.
Название поставщика, определившего класс SPI, и краткое описание класса доступны через методы getVendorName, getDescription, и getVersion. Эти методы могут быть локализованы, чтобы предоставить вывод, специфичный для языка. Эти методы предназначены в основном для предоставления краткой, удобочитаемой информации, которая может быть использована для организации всплывающего меню или другого списка.
Списка имён форматов, расширений файлов и MIME-типов, связанных с сервисом, можно получить с помощью методов getFormatNames, getFileSuffixes, и getMIMEType. Эти методы могут быть использованы для идентификации потенциальных ImageWriter для записи конкретного файла или потока на основе ручного выбора формата, именования файлов или ассоциаций MIME.
Более надёжный способ определить, какие ImageWriter способны анализировать конкретный поток данных, предоставляется методом canEncodeImage. Этот метод позволяет поставщику услуг проверить фактическое содержимое изображения.
Наконец, экземпляр класса ImageWriter, связанный с этим поставщиком услуг, может быть получен, вызвав метод createWriterInstance. Любая ресурсоёмкая инициализация, такая как загрузка нативных библиотек или создание больших таблиц, должна быть отложена по крайней мере до первого вызова этого метода.
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Class<?>[] |
outputTypes |
Массив объектов Class для возврата методом getOutputTypes, изначально null. |
protected String[] |
readerSpiNames |
Массив строк для возврата методом getImageReaderSpiNames, изначально null. |
static final 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 с заданным набором значений. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canEncodeImage |
Возвращает true если реализация ImageWriter связанная с этим поставщиком услуг способна закодировать переданный экземпляр RenderedImage. |
abstract boolean |
canEncodeImage |
Возвращает true если реализация ImageWriter связанная с этим поставщиком услуг способна закодировать изображение с заданной компоновкой. |
ImageWriter |
createWriterInstance() |
Возвращает экземпляр реализации ImageWriter связанной с этим поставщиком услуг. |
abstract ImageWriter |
createWriterInstance |
Возвращает экземпляр реализации ImageWriter связанной с этим поставщиком услуг. |
String[] |
getImageReaderSpiNames() |
Возвращает массив String содержащий все полные имена всех классов ImageReaderSpi, которые могут понимать внутреннее представление метаданных, используемое ImageWriter связанным с этим поставщиком услуг, или null если таких ImageReaders нет. |
Class<?>[] |
getOutputTypes() |
Возвращает массив Class объектов, указывающих какие типы объектов могут быть использованы в качестве аргументов методу setOutput записывателя. |
boolean |
isFormatLossless() |
Возвращает true если формат, который выводит этот записыватель, сохраняет данные пикселей точно. |
boolean |
isOwnWriter |
Возвращает 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
Подробное описание полей
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- еслиvendorNamenull. -
IllegalArgumentException- еслиversionnull. -
IllegalArgumentException- еслиnamesnullили имеет длину 0. -
IllegalArgumentException- еслиwriterClassNamenull. -
IllegalArgumentException- еслиoutputTypesnullили имеет длину 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- еслиtypenull.
canEncodeImage
public boolean canEncodeImage(RenderedImage im)
true , если реализация ImageWriter , связанная с этим поставщиком сервиса, может закодировать данный экземпляр RenderedImage. Обратите внимание, что это включает экземпляры java.awt.image.BufferedImage. См. обсуждение для canEncodeImage(ImageTypeSpecifier) для получения информации о семантике этого метода.
- Параметры:
-
im- экземплярRenderedImageдля кодирования. - Возвращает:
-
true, если этот записыватель, скорее всего, сможет закодировать это изображение. - Исключения:
-
IllegalArgumentException- еслиimnull.
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- еслиwriternull.
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:
© 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
{ ImageOutputStream.class }.