Класс ImageWriterSpi
- Все реализованные интерфейсы:
RegisterableService
public abstract class ImageWriterSpi extends ImageReaderWriterSpi
ImageWriters. Дополнительные сведения о классах поставщиков служб см. в комментарии к классу IIORegistry. Каждый ImageWriterSpi предоставляет несколько типов сведений о связанном с ним классе ImageWriter.
Имя поставщика, определившего класс SPI, и краткое описание класса можно получить с помощью методов getVendorName, getDescription и getVersion. Эти методы можно интернационализировать для получения локализованного вывода. Они предназначены главным образом для предоставления краткой информации, удобной для чтения человеком и пригодной, например, для упорядочивания всплывающего меню или другого списка.
Списки имен форматов, расширений файлов и типов MIME, связанных со службой, можно получить с помощью методов getFormatNames, getFileSuffixes и getMIMEType. Эти методы можно использовать для определения подходящих кандидатов ImageWriters для записи определенного файла или потока на основе выбора формата пользователем, имени файла или соответствия MIME.
Более надежный способ определить, какие ImageWriters могут обработать определенный поток данных, предоставляет метод 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
Поля, объявленные в классе 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() |
Возвращает массив Strings, содержащий полные имена всех классов 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
Методы, объявленные в классе 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массивStrings, содержащий имена форматов. Необходимо указать как минимум одну запись. -
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.
- Возвращает:
- не-
nullмассив объектовClassдлиной не менее 1.
canEncodeImage
public abstract boolean canEncodeImage(ImageTypeSpecifier type)
true, если реализация ImageWriter, связанная с этим поставщиком службы, может кодировать изображение с заданной компоновкой. Компоновка (то есть SampleModel и ColorModel изображения) описывается объектом ImageTypeSpecifier. Возвращаемое значение true не является абсолютной гарантией успешного кодирования: в процессе кодирования все еще могут возникнуть ошибки, например из-за ошибок ввода-вывода, несогласованных или некорректных структур данных и т. д. Предполагается, что будет выполнена разумная проверка базовой структуры изображения, чтобы определить, соответствует ли оно возможностям формата кодирования. Например, поставщик службы для формата, который поддерживает кодирование только изображений в оттенках серого, вернет false, если ему передать BufferedImage RGB. Аналогично, поставщик службы для формата, поддерживающего кодирование изображений RGB с глубиной 8 бит, может отказаться кодировать изображение со связанной альфа-областью.
Разные 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/imageio/spi/ImageWriterSpi.html
{ ImageOutputStream.class }.