Класс 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- если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:
© 1993, 2021, 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/17/docs/api/java.desktop/javax/imageio/spi/ImageWriterSpi.html
{ ImageOutputStream.class }напрямую.