Класс 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 |
Устарело. |
Поля, объявленные в классе ImageReaderWriterSpi
extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat | Модификатор и тип | Поле | Описание |
|---|---|---|
protected String[] |
extraImageMetadataFormatClassNames |
Массив объектов String, содержащих имена классов любых дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraImageMetadataFormatNames |
Массив объектов String, содержащих имена любых дополнительных форматов метаданных изображений, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraStreamMetadataFormatClassNames |
Массив объектов String, содержащих имена классов любых дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
extraStreamMetadataFormatNames |
Массив объектов String, содержащих имена любых дополнительных форматов метаданных потоков, поддерживаемых этим подключаемым модулем; изначально — null. |
protected String[] |
MIMETypes |
Массив строк, возвращаемый методом getMIMETypes; изначально — null. |
protected String[] |
names |
Массив строк, возвращаемый методом getFormatNames; изначально — null. |
protected String |
nativeImageMetadataFormatClassName |
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeImageMetadataFormatName |
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeStreamMetadataFormatClassName |
Объект String, содержащий имя класса собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
nativeStreamMetadataFormatName |
Объект String, содержащий имя собственного формата метаданных потока, поддерживаемого этим подключаемым модулем; изначально — null. |
protected String |
pluginClassName |
Объект String, содержащий имя связанного класса подключаемого модуля; изначально — null. |
protected String[] |
suffixes |
Массив строк, возвращаемый методом getFileSuffixes; изначально — null. |
protected boolean |
supportsStandardImageMetadataFormat |
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных изображений; изначально — false. |
protected boolean |
supportsStandardStreamMetadataFormat |
Логическое значение, указывающее, поддерживает ли этот подключаемый модуль стандартный формат метаданных для метаданных потоков; изначально — false. |
Поля, объявленные в классе IIOServiceProvider
vendorName, version | Модификатор и тип | Поле | Описание |
|---|---|---|
protected String |
vendorName |
Объект String, возвращаемый методом getVendorName; изначально — null. |
protected String |
version |
Объект String, возвращаемый методом getVersion; изначально — null. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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, связанного с этим поставщиком службы. |
Методы, объявленные в классе ImageReaderWriterSpi
getExtraImageMetadataFormatNames, getExtraStreamMetadataFormatNames, getFileSuffixes, getFormatNames, getImageMetadataFormat, getMIMETypes, getNativeImageMetadataFormatName, getNativeStreamMetadataFormatName, getPluginClassName, getStreamMetadataFormat, isStandardImageMetadataFormatSupported, isStandardStreamMetadataFormatSupported | Модификатор и тип | Метод | Описание |
|---|---|---|
String[] |
getExtraImageMetadataFormatNames() |
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем. |
String[] |
getExtraStreamMetadataFormatNames() |
Возвращает массив объектов String, содержащий имена дополнительных форматов документов, помимо собственного и стандартного, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем. |
String[] |
getFileSuffixes() |
Возвращает массив объектов String, содержащий список расширений файлов, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
String[] |
getFormatNames() |
Возвращает массив объектов String, содержащий понятные человеку имена форматов, обычно используемых реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
IIOMetadataFormat |
getImageMetadataFormat |
Возвращает объект IIOMetadataFormat с описанием заданного формата метаданных изображения или null, если описание недоступно. |
String[] |
getMIMETypes() |
Возвращает массив объектов String, содержащий список типов MIME, связанных с форматами, обычно используемыми реализацией ImageReader или ImageWriter, связанной с этим поставщиком службы. |
String |
getNativeImageMetadataFormatName() |
Возвращает имя «собственного» формата метаданных изображений для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу метаданных изображения, хранящихся в формате, обрабатываемом этим подключаемым модулем, без потерь. |
String |
getNativeStreamMetadataFormatName() |
Возвращает имя «собственного» формата метаданных потоков для этого подключаемого модуля, который обычно позволяет выполнять кодирование и передачу метаданных потока, хранящихся в формате, обрабатываемом этим подключаемым модулем, без потерь. |
String |
getPluginClassName() |
Возвращает полное имя класса подключаемого модуля ImageReader или ImageWriter, связанного с этим поставщиком службы. |
IIOMetadataFormat |
getStreamMetadataFormat |
Возвращает объект IIOMetadataFormat с описанием заданного формата метаданных потока или null, если описание недоступно. |
boolean |
isStandardImageMetadataFormatSupported() |
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных изображений, создаваемых или обрабатываемых этим подключаемым модулем. |
boolean |
isStandardStreamMetadataFormatSupported() |
Возвращает true, если стандартный формат метаданных входит в число форматов документов, распознаваемых методами getAsTree и setFromTree для объектов метаданных потоков, создаваемых или обрабатываемых этим подключаемым модулем. |
Методы, объявленные в классе IIOServiceProvider
getDescription, getVendorName, getVersion, onDeregistration, onRegistration | Модификатор и тип | Метод | Описание |
|---|---|---|
abstract String |
getDescription |
Возвращает краткое, понятное человеку описание этого поставщика службы и связанной с ним реализации. |
String |
getVendorName() |
Возвращает название поставщика, ответственного за создание этого поставщика службы и связанной с ним реализации. |
String |
getVersion() |
Возвращает строку с описанием номера версии этого поставщика службы и связанной с ним реализации. |
void |
onDeregistration |
Обратный вызов, который выполняется при отмене регистрации класса Spi в ServiceRegistry. |
void |
onRegistration |
Обратный вызов, который выполняется ровно один раз после создания экземпляра класса Spi и его регистрации в ServiceRegistry. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного периода реального времени. |
Подробное описание полей
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— массивStrings, не равныйnull, указывающий имена форматов. Должна присутствовать как минимум одна запись. -
suffixes— массивStrings, указывающий распространенные расширения файлов. Если расширения не определены, следует указатьnull. Массив нулевой длины будет нормализован доnull. -
MIMETypes— массивStrings, указывающий типы MIME формата. Если расширения не определены, следует указатьnull. Массив нулевой длины будет нормализован доnull. -
writerClassName— полное имя связанного классаImageWriterSpiв виде строки, не равнойnull String. -
outputTypes— массив объектовClassдлиной не менее 1, указывающий допустимые типы вывода. -
readerSpiNames— массивStrings длиной не менее 1, содержащий имена классов всех связанныхImageReaders, илиnull. Массив нулевой длины нормализуется доnull. -
supportsStandardStreamMetadataFormat—boolean, указывающий, может ли объект метаданных потока использовать деревья, описанные в стандартном формате метаданных. -
nativeStreamMetadataFormatName—Stringилиnull, возвращаемое изgetNativeStreamMetadataFormatName. -
nativeStreamMetadataFormatClassName—Stringилиnull, используемое для создания объекта формата метаданных, возвращаемого изgetNativeStreamMetadataFormat. -
extraStreamMetadataFormatNames— массивStrings илиnull, возвращаемый изgetExtraStreamMetadataFormatNames. Массив нулевой длины нормализуется доnull. -
extraStreamMetadataFormatClassNames— массивStrings илиnull, используемый для создания объекта формата метаданных, возвращаемого изgetStreamMetadataFormat. Массив нулевой длины нормализуется доnull. -
supportsStandardImageMetadataFormat—boolean, указывающий, может ли объект метаданных изображения использовать деревья, описанные в стандартном формате метаданных. -
nativeImageMetadataFormatName—Stringилиnull, возвращаемое изgetNativeImageMetadataFormatName. -
nativeImageMetadataFormatClassName—Stringилиnull, используемое для создания объекта формата метаданных, возвращаемого изgetNativeImageMetadataFormat. -
extraImageMetadataFormatNames— массивStrings, возвращаемый изgetExtraImageMetadataFormatNames. Массив нулевой длины нормализуется доnull. -
extraImageMetadataFormatClassNames— массивStrings илиnull, используемый для создания объекта формата метаданных, возвращаемого изgetImageMetadataFormat. Массив нулевой длины нормализуется доnull. - Вызывает исключение:
-
IllegalArgumentException— еслиvendorNameравноnull. -
IllegalArgumentException— еслиversionравноnull. -
IllegalArgumentException— еслиnamesравноnullили имеет нулевую длину. -
IllegalArgumentException— еслиwriterClassNameравноnull. -
IllegalArgumentException— еслиoutputTypesравноnullили имеет нулевую длину.
Подробное описание методов
isFormatLossless
public boolean isFormatLossless()
true, если формат, в который выполняет запись этот модуль, сохраняет данные пикселей с точностью до бита. Реализация по умолчанию возвращает true.- Возвращает:
-
true, если формат сохраняет полную точность пикселей.
getOutputTypes
public Class<?>[] getOutputTypes()
Class, указывающих типы объектов, которые могут использоваться в качестве аргументов метода setOutput модуля записи. Для большинства модулей записи, выполняющих вывод только в ImageOutputStream, следует возвращать массив из одного элемента, содержащий ImageOutputStream.class.
- Возвращает:
- массив объектов
Classдлиной не менее 1, не равныйnull.
canEncodeImage
public abstract boolean canEncodeImage(ImageTypeSpecifier type)
true, если реализация ImageWriter, связанная с этим поставщиком службы, способна кодировать изображение с заданной структурой. Структура (т. е., SampleModel и ColorModel изображения) описывается объектом ImageTypeSpecifier. Возвращаемое значение true не является абсолютной гарантией успешного кодирования: в процессе кодирования все еще могут возникнуть ошибки из-за таких факторов, как ошибки ввода-вывода, несогласованные или некорректные структуры данных и т. д. Предполагается, что будет выполнена разумная проверка базовой структуры изображения, чтобы определить, соответствует ли оно возможностям формата кодирования. Например, поставщик службы для формата, который может кодировать только изображения в оттенках серого, вернет false, если ему передать изображение RGB BufferedImage. Аналогично, поставщик службы для формата, способного кодировать 8-битные изображения RGB, может отказаться кодировать изображение со связанным альфа-каналом.
Разные ImageWriters, а значит, и поставщики служб, могут придерживаться более или менее строгих требований. Например, они могут принимать изображение с предварительно умноженным альфа-каналом, хотя для сохранения его придется разделить для каждого пикселя, что приведет к некоторой потере точности.
- Параметры:
-
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. - См. также:
© 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.
{ ImageOutputStream.class }.