Класс 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- массивString, указывающих имена форматов, безnull. Должен содержать хотя бы один элемент. -
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- значение, указывающее, может ли объект метаданных потока использовать деревья, описанные стандартным форматом метаданных. -
nativeStreamMetadataFormatName- значение, илиnull, возвращаемое методомgetNativeStreamMetadataFormatName. -
nativeStreamMetadataFormatClassName- значение, илиnull, используемое для создания объекта формата метаданных, возвращаемого методомgetNativeStreamMetadataFormat. -
extraStreamMetadataFormatNames- массивStringилиnull, возвращаемый методомgetExtraStreamMetadataFormatNames. Массив длиной 0 нормализуется доnull. -
extraStreamMetadataFormatClassNames- массивStringилиnull, используемый для создания объекта формата метаданных, возвращаемого методомgetStreamMetadataFormat. Массив длиной 0 нормализуется доnull. -
supportsStandardImageMetadataFormat- значение, указывающее, может ли объект метаданных изображения использовать деревья, описанные стандартным форматом метаданных. -
nativeImageMetadataFormatName- значение, илиnull, возвращаемое методомgetNativeImageMetadataFormatName. -
nativeImageMetadataFormatClassName- значение, или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. - См. также:
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/imageio/spi/ImageWriterSpi.html
{ ImageOutputStream.class }.