Spec-Zone.ru › OpenJDK 21

Класс ImageReaderSpi

java.lang.Object
javax.imageio.spi.IIOServiceProvider
javax.imageio.spi.ImageReaderWriterSpi
javax.imageio.spi.ImageReaderSpi
Все реализованные интерфейсы:
RegisterableService
public abstract class ImageReaderSpi extends ImageReaderWriterSpi
Интерфейс поставщика сервисов (SPI) для ImageReader. Дополнительную информацию о классах-поставщиках сервисов см. в комментарии к классу IIORegistry.

Каждый ImageReaderSpi предоставляет несколько типов информации об ассоциированном с ним классе ImageReader.

Название поставщика SPI и краткое описание класса доступны через методы getVendorName, getDescription, и getVersion. Эти методы могут быть локализованы для обеспечения вывода, соответствующего конкретному региону. Эти методы предназначены в основном для предоставления краткой, понятной для человека информации, которая может использоваться для организации всплывающего меню или другого списка.

Список имён форматов, расширений файлов и типов MIME, связанных с сервисом, можно получить с помощью методов getFormatNames, getFileSuffixes, и getMIMETypes. Эти методы могут использоваться для определения кандидатов ImageReader для декодирования конкретного файла или потока данных на основе ручного выбора формата, имён файлов или ассоциаций MIME (например, при доступе к файлу через HTTP или как к приложению электронной почты).

Более надёжный способ определить, какие ImageReader, вероятно, смогут обработать конкретный поток данных, предоставляется методом canDecodeInput. Этот метод позволяет поставщику сервиса просмотреть содержимое потока данных.

Наконец, экземпляр класса ImageReader, связанного с этим поставщиком сервиса, может быть получен вызовом метода createReaderInstance. Любые ресурсоёмкие операции инициализации, такие как загрузка нативных библиотек или создание больших таблиц, должны быть отложены, по крайней мере, до первого вызова этого метода.

См. также:
  • IIORegistry
  • ImageReader

Краткое описание полей

Модификатор и тип Поле Описание
protected Class<?>[] inputTypes
Массив объектов Class, которые должны быть возвращены методом getInputTypes, изначально null.
static final Class<?>[] STANDARD_INPUT_TYPE
Устарело.
Вместо использования этого поля, создайте эквивалентный массив { ImageInputStream.class } напрямую.
protected String[] writerSpiNames
Массив строк, которые должны быть возвращены методом getImageWriterSpiNames, изначально null.

Поля, объявленные в классе javax.imageio.spi.ImageReaderWriterSpi

extraImageMetadataFormatClassNames, extraImageMetadataFormatNames, extraStreamMetadataFormatClassNames, extraStreamMetadataFormatNames, MIMETypes, names, nativeImageMetadataFormatClassName, nativeImageMetadataFormatName, nativeStreamMetadataFormatClassName, nativeStreamMetadataFormatName, pluginClassName, suffixes, supportsStandardImageMetadataFormat, supportsStandardStreamMetadataFormat

Поля, объявленные в классе javax.imageio.spi.IIOServiceProvider

vendorName, version

Краткое описание конструкторов

ImageReaderSpi()
ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Модификатор Конструктор Описание
protected
Создаёт пустой ImageReaderSpi.
Создаёт ImageReaderSpi с заданными значениями.

Краткое описание методов

Модификатор и тип Метод Описание
abstract boolean canDecodeInput(Object source)
Возвращает true, если предоставленный объект источника, по-видимому, имеет формат, поддерживаемый этим ридером.
ImageReader createReaderInstance()
Возвращает экземпляр реализации ImageReader, связанный с этим поставщиком сервиса.
abstract ImageReader createReaderInstance(Object extension)
Возвращает экземпляр реализации ImageReader связанный с этим поставщиком сервиса.
String[] getImageWriterSpiNames()
Возвращает массив String с полными именами всех классов ImageWriterSpi, которые могут понимать внутреннее представление метаданных, используемое ImageReader, связанным с этим поставщиком сервиса, или null, если таких ImageWriter не указано.
Class<?>[] getInputTypes()
Возвращает массив Class объектов, указывающих, какие типы объектов могут быть использованы в качестве аргументов к методу setInput ридера.
boolean isOwnReader(ImageReader reader)
Возвращает true если объект ImageReader является экземпляром ImageReader связанного с этим поставщиком сервиса.

Наследованные методы из класса 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

Наследованные методы из класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

STANDARD_INPUT_TYPE

@Deprecated public static final Class<?>[] STANDARD_INPUT_TYPE
Устаревшее.
Вместо использования этого поля, создайте непосредственно эквивалентный массив { ImageInputStream.class }.
Массив с одним элементом, изначально содержащий ImageInputStream.class, который должен быть возвращён методом getInputTypes.

inputTypes

protected Class<?>[] inputTypes
Массив объектов Class для возвращения методом getInputTypes, изначально null.

writerSpiNames

protected String[] writerSpiNames
Массив строк, возвращаемый методом getImageWriterSpiNames, изначально null.

Подробное описание конструкторов

ImageReaderSpi

protected ImageReaderSpi()
Создаёт пустой ImageReaderSpi. Подклассу необходимо инициализировать переменные экземпляра и/или переопределить реализации методов, чтобы обеспечить рабочие версии всех методов.

ImageReaderSpi

public ImageReaderSpi(String vendorName, String version, String[] names, String[] suffixes, String[] MIMETypes, String readerClassName, Class<?>[] inputTypes, String[] writerSpiNames, boolean supportsStandardStreamMetadataFormat, String nativeStreamMetadataFormatName, String nativeStreamMetadataFormatClassName, String[] extraStreamMetadataFormatNames, String[] extraStreamMetadataFormatClassNames, boolean supportsStandardImageMetadataFormat, String nativeImageMetadataFormatName, String nativeImageMetadataFormatClassName, String[] extraImageMetadataFormatNames, String[] extraImageMetadataFormatClassNames)
Создаёт ImageReaderSpi с заданными значениями.
Параметры:
vendorName - имя поставщика, в качестве не-null String.
version - идентификатор версии в качестве не-null String.
names - массив, не содержащий null элементов, содержащих имена форматов. Должен содержать хотя бы один элемент.
suffixes - массив, содержащий String общих расширений файлов. Если расширения не определены, должен быть передан null. Массив длиной 0 будет нормирован в null.
MIMETypes - массив String MIME-типов формата. Если MIME-типы не определены, должен быть передан null. Массив длиной 0 будет нормирован в null.
readerClassName - полное квалифицированное имя связанного класса ImageReader, в качестве не-null String.
inputTypes - массив, не содержащий null элементов Class объектов, содержащих допустимые типы ввода. Длина массива должна быть не меньше 1.
writerSpiNames - массив String имён классов всех связанных ImageWriter или 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 - если readerClassName имеет значение null.
IllegalArgumentException - если inputTypes имеет значение null или имеет длину 0.

Подробное описание методов

getInputTypes

public Class<?>[] getInputTypes()
Возвращает массив объектов Class , указывающих, какие типы объектов могут быть использованы в качестве аргументов метода setInput читателя.

Для большинства читателей, которые принимают входные данные только от ImageInputStream, должен быть возвращён массив с одним элементом, содержащий ImageInputStream.class.

Возвращает:
массив, не содержащий null объектов Class длиной не менее 1.

canDecodeInput

public abstract boolean canDecodeInput(Object source) throws IOException
Возвращает true если предоставленный объект источника, похоже, соответствует формату, поддерживаемому этим читателем. Возвращение значения true этим методом не гарантирует успешности чтения, только то, что существует разумная вероятность успеха на основе краткого анализа содержимого потока. Если источником является ImageInputStream, реализации обычно проверяют первые несколько байт потока на наличие "магического числа", связанного с форматом. После начала фактического чтения, читатель может в любой момент указать на ошибку до завершения декодирования.

Важно, чтобы состояние объекта не изменялось, чтобы другие ImageReaderSpi могли правильно определить, могут ли они декодировать объект. В частности, если источником является ImageInputStream, необходимо использовать пару mark/reset для сохранения позиции в потоке.

Форматы, такие как "сырой", которые могут потенциально пытаться прочитать практически любой поток, должны возвращать false, чтобы избежать вызова в приоритете по сравнению с более подходящими.

Если source не является экземпляром одного из классов, возвращаемых getInputTypes, метод просто возвращает false.

Параметры:
source - объект (обычно ImageInputStream), который нужно декодировать.
Возвращает:
true если вероятно, что этот поток может быть декодирован.
Исключения:
IllegalArgumentException - если source имеет значение null.
IOException - если произошла ошибка ввода/вывода при чтении потока.

createReaderInstance

public ImageReader createReaderInstance() throws IOException
Возвращает экземпляр реализации ImageReader , связанной с этим поставщиком услуг. Возвращаемый объект изначально будет в начальном состоянии, как если бы был вызван его метод reset.

Реализация по умолчанию просто возвращает createReaderInstance(null).

Возвращает:
экземпляр ImageReader.
Исключения:
IOException - если произошла ошибка при загрузке, инициализации класса читателя, создании или инициализации объекта читателя.

createReaderInstance

public abstract ImageReader createReaderInstance(Object extension) throws IOException
Возвращает экземпляр реализации ImageReader , связанной с этим поставщиком услуг. Возвращаемый объект изначально будет в начальном состоянии, как если бы был вызван его метод reset.

Object может быть передан плагину при создании. Характер объекта полностью зависит от плагина.

Обычно плагин реализует этот метод, используя код типа return new MyImageReader(this).

Параметры:
extension - объект расширения, специфичный для плагина, который может быть null.
Возвращает:
экземпляр ImageReader.
Исключения:
IOException - если попытка создания читателя завершилась неудачно.
IllegalArgumentException - если конструктор ImageReader выбросил IllegalArgumentException для обозначения того, что объект расширения не подходит.

isOwnReader

public boolean isOwnReader(ImageReader reader)
Возвращает true если объект ImageReader , переданный в качестве аргумента, является экземпляром ImageReader , связанным с этим поставщиком услуг.

Реализация по умолчанию сравнивает полное квалифицированное имя класса аргумента reader с именем класса, переданным в конструктор. Этот метод можно переопределить, если требуется более сложная проверка.

Параметры:
reader - экземпляр ImageReader.
Возвращает:
true если reader распознан.
Исключения:
IllegalArgumentException - если reader имеет значение null.

getImageWriterSpiNames

public String[] getImageWriterSpiNames()
Возвращает массив String содержащих полные имена всех ImageWriterSpi классов, которые могут понимать внутреннее представление метаданных, используемое ImageReader связанным с этим поставщиком услуг, или null, если такие ImageWriter не указаны. Если возвращается не-null значение, оно должно иметь ненулевую длину.

Первый элемент массива должен содержать имя поставщика услуг для "предпочтительного" записывателя, так как он будет использоваться для создания экземпляра ImageWriter возвращаемого ImageIO.getImageWriter(ImageReader).

Этот механизм может быть использован для получения ImageWriters , которые будут понимать внутреннюю структуру метаданных без пикселей (см. IIOTreeInfo) , генерируемых ImageReader. Получив эти данные от ImageReader и передав их одному из ImageWriters , полученных с помощью этого метода, клиентская программа может прочитать изображение, изменить его каким-либо образом и записать обратно, сохранив все метаданные, не понимая ничего о внутренней структуре метаданных или даже о формате изображения.

Возвращает:
массив String длиной не менее 1 содержащий имена ImageWriterSpi, или null.
См. также:
  • ImageIO.getImageWriter(ImageReader)

© 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/ImageReaderSpi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API