Spec-Zone.ru › OpenJDK 27

Класс JPEGImageWriteParam

java.lang.Object
javax.imageio.IIOParam
javax.imageio.ImageWriteParam
javax.imageio.plugins.jpeg.JPEGImageWriteParam
public class JPEGImageWriteParam extends ImageWriteParam
Этот класс позволяет задавать таблицы квантования JPEG и таблицы Хаффмана при использовании встроенного модуля записи JPEG, а также запрашивать вычисление оптимизированных таблиц Хаффмана для изображения. Экземпляр этого класса возвращается методами getDefaultImageWriteParam встроенного модуля ImageWriter JPEG.

Основное назначение этих дополнений — дать возможность задавать таблицы для кодирования сокращённых потоков. Встроенный модуль записи JPEG также принимает обычный объект ImageWriteParam, и в этом случае модуль записи создаёт необходимые таблицы самостоятельно.

В обоих случаях настройка качества в объекте ImageWriteParam имеет то же значение, что и в базовой библиотеке: 1.00 означает таблицу квантования, состоящую только из единиц, 0.75 — «стандартную» визуально неразличимую таблицу квантования, а 0.00 — таблицу квантования, состоящую только из значений 255.

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

Обычно таблицы задаются в объектах IIOMetadata, передаваемых модулю записи, и любые таблицы, включённые в эти объекты, записываются в поток. Если в метаданных таблицы не заданы, записывается сокращённый поток. Если таблицы не включены в метаданные и не заданы в объекте JPEGImageWriteParam, сокращённый поток кодируется с использованием «стандартных» визуально неразличимых таблиц. Этот класс необходим для задания таблиц, когда требуется записать сокращённый поток, не записывая предварительно таблицы в поток. Чтобы использовать этот класс, объект метаданных, передаваемый модулю записи, не должен содержать таблиц, а метаданные потока не должны предоставляться. Дополнительные сведения о таблицах по умолчанию см. в документации JPEGQTable и JPEGHuffmanTable.

Объект JPEGImageWriteParam по умолчанию, возвращаемый методом getDefaultWriteParam модуля записи, не содержит таблиц. Таблицы по умолчанию включены в объекты IIOMetadata по умолчанию, возвращаемые модулем записи.

Если метаданные содержат таблицы, таблицы, заданные в объекте JPEGImageWriteParam, игнорируются. Кроме того, после записи набора таблиц переопределить их для последующих операций записи — в тот же или другой поток — могут только таблицы из метаданных. Чтобы задать новые таблицы с помощью этого класса, необходимо вызвать метод reset модуля записи.

Дополнительные сведения о работе встроенных модулей JPEG см. в спецификации формата метаданных JPEG и примечаниях по использованию.

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

Поля, объявленные в классе ImageWriteParam

canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet
Модификатор и тип Поле Описание
protected boolean canOffsetTiles
Объект boolean, равный true, если этот объект ImageWriteParam позволяет задавать смещение начала сетки мозаичного разбиения.
protected boolean canWriteCompressed
Объект boolean, равный true, если этот модуль записи может записывать изображения с использованием сжатия.
protected boolean canWriteProgressive
Объект boolean, равный true, если этот объект ImageWriteParam позволяет записывать изображения в виде последовательности прогрессивных проходов с возрастающим качеством.
protected boolean canWriteTiles
Объект boolean, равный true, если этот объект ImageWriteParam позволяет задавать параметры ширины и высоты плитки.
protected int compressionMode
Режим управления настройками сжатия, который должен иметь одно из четырёх значений MODE_*.
protected float compressionQuality
Объект float, содержащий текущую настройку качества сжатия.
protected String compressionType
Объект String, содержащий имя текущего типа сжатия или null, если тип не задан.
protected String[] compressionTypes
Массив объектов String, содержащий имена доступных типов сжатия.
protected Locale locale
Объект Locale для локализации имён типов сжатия и описаний качества либо null для использования объекта Locale по умолчанию.
static final int MODE_COPY_FROM_METADATA
Постоянное значение, которое можно передать таким методам, как setTilingMode, setProgressiveMode или setCompressionMode, чтобы включить эту функцию для последующих операций записи.
static final int MODE_DEFAULT
Постоянное значение, которое можно передать таким методам, как setTilingMode, setProgressiveMode и setCompressionMode, чтобы включить эту функцию для последующих операций записи.
static final int MODE_DISABLED
Постоянное значение, которое можно передать таким методам, как setTilingMode, setProgressiveMode и setCompressionMode, чтобы отключить функцию для последующих операций записи.
static final int MODE_EXPLICIT
Постоянное значение, которое можно передать таким методам, как setTilingMode или setCompressionMode, чтобы включить функцию для последующих операций записи.
protected Dimension[] preferredTileSizes
Массив предпочтительных диапазонов размеров плиток.
protected int progressiveMode
Режим управления прогрессивным кодированием, который должен иметь одно из четырёх значений MODE_*, кроме MODE_EXPLICIT.
protected int tileGridXOffset
Величина горизонтального смещения начала сетки плиток относительно начала изображения, если мозаичное разбиение задано, или 0 в противном случае.
protected int tileGridYOffset
Величина вертикального смещения начала сетки плиток относительно начала изображения, если мозаичное разбиение задано, или 0 в противном случае.
protected int tileHeight
Высота каждой плитки, если мозаичное разбиение задано, или 0 в противном случае.
protected int tileWidth
Ширина каждой плитки, если мозаичное разбиение задано, или 0 в противном случае.
protected int tilingMode
Режим управления настройками мозаичного разбиения, который должен иметь одно из четырёх значений MODE_*.
protected boolean tilingSet
Объект boolean, равный true, если параметры мозаичного разбиения заданы.

Поля, объявленные в классе IIOParam

controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
Модификатор и тип Поле Описание
protected IIOParamController controller
Объект IIOParamController, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController.
protected IIOParamController defaultController
Объект IIOParamController по умолчанию, который будет использоваться для задания параметров этого объекта IIOParam при вызове метода activateController.
protected Point destinationOffset
Смещение в целевом изображении, в котором должен располагаться декодированный пиксель в верхнем левом углу.
protected ImageTypeSpecifier destinationType
Объект ImageTypeSpecifier, используемый для создания целевого изображения при чтении или задания типа выходного цвета при записи.
protected int[] sourceBands
Массив объектов int, указывающий, какие полосы источника будут использоваться, или null.
protected Rectangle sourceRegion
Область источника; если она не задана, используется null.
protected int sourceXSubsampling
Децимационная субдискретизация, применяемая в горизонтальном направлении.
protected int sourceYSubsampling
Децимационная субдискретизация, применяемая в вертикальном направлении.
protected int subsamplingXOffset
Горизонтальное смещение, применяемое к сетке субдискретизации перед субдискретизацией.
protected int subsamplingYOffset
Вертикальное смещение, применяемое к сетке субдискретизации перед субдискретизацией.

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

Конструктор Описание
JPEGImageWriteParam(Locale locale)
Создаёт объект JPEGImageWriteParam.

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

Модификатор и тип Метод Описание
boolean areTablesSet()
Возвращает true, если таблицы заданы в данный момент.
JPEGHuffmanTable[] getACHuffmanTables()
Возвращает копию массива таблиц Хаффмана AC, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
JPEGHuffmanTable[] getDCHuffmanTables()
Возвращает копию массива таблиц Хаффмана DC, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
boolean getOptimizeHuffmanTables()
Возвращает значение, переданное при последнем вызове setOptimizeHuffmanTables, или false, если вызов setOptimizeHuffmanTables ещё не выполнялся.
JPEGQTable[] getQTables()
Возвращает копию массива таблиц квантования, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
boolean isCompressionLossless()
Возвращает false, поскольку модуль JPEG поддерживает только сжатие с потерями.
void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
Задаёт таблицы квантования и Хаффмана для кодирования сокращённых потоков.
void setOptimizeHuffmanTables(boolean optimize)
Указывает модулю записи генерировать оптимизированные таблицы Хаффмана для изображения в процессе записи.
void unsetCompression()
Удаляет предыдущую настройку качества сжатия, если она была задана.
void unsetEncodeTables()
Удаляет все заданные в данный момент таблицы квантования и Хаффмана.

Методы, объявленные в классе ImageWriteParam

canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionQualityDescriptions, getCompressionQualityValues, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetTiling
Модификатор и тип Метод Описание
boolean canOffsetTiles()
Возвращает true, если модуль записи может выполнять мозаичное разбиение с ненулевыми смещениями начала сетки при записи.
boolean canWriteCompressed()
Возвращает true, если этот модуль записи поддерживает сжатие.
boolean canWriteProgressive()
Возвращает true, если модуль записи может записывать изображения в виде серии проходов с постепенно возрастающим качеством.
boolean canWriteTiles()
Возвращает true, если модуль записи может выполнять мозаичное разбиение при записи.
float getBitRate(float quality)
Возвращает объект float, содержащий оценку количества битов выходных данных на каждый бит входных данных изображения для заданного уровня качества.
int getCompressionMode()
Возвращает текущий режим сжатия, если сжатие поддерживается.
float getCompressionQuality()
Возвращает текущую настройку качества сжатия.
String[] getCompressionQualityDescriptions()
Возвращает массив объектов String, которые можно использовать вместе с getCompressionQualityValues в пользовательском интерфейсе для задания или отображения уровня качества сжатия.
float[] getCompressionQualityValues()
Возвращает массив объектов float, которые можно использовать вместе с getCompressionQualityDescriptions в пользовательском интерфейсе для задания или отображения уровня качества сжатия.
String getCompressionType()
Возвращает заданный в данный момент тип сжатия или null, если он не задан.
String[] getCompressionTypes()
Возвращает список доступных типов сжатия в виде массива объектов String или null, если выбрать тип сжатия с помощью этих интерфейсов нельзя.
Locale getLocale()
Возвращает заданный в данный момент объект Locale или null, если поддерживается только объект Locale по умолчанию.
String getLocalizedCompressionTypeName()
Возвращает локализованную версию имени текущего типа сжатия, используя объект Locale, возвращаемый методом getLocale.
Dimension[] getPreferredTileSizes()
Возвращает массив объектов Dimension, указывающих допустимые диапазоны размеров плиток при их кодировании в выходной файл или поток.
int getProgressiveMode()
Возвращает текущий режим прогрессивной записи потока.
int getTileGridXOffset()
Возвращает смещение сетки плиток изображения по горизонтали в том виде, в каком оно будет записано в выходной поток.
int getTileGridYOffset()
Возвращает смещение сетки плиток изображения по вертикали в том виде, в каком оно будет записано в выходной поток.
int getTileHeight()
Возвращает высоту каждой плитки изображения в том виде, в каком оно будет записано в выходной поток.
int getTileWidth()
Возвращает ширину каждой плитки изображения в том виде, в каком оно будет записано в выходной поток.
int getTilingMode()
Возвращает текущий режим мозаичного разбиения, если оно поддерживается.
void setCompressionMode(int mode)
Задаёт, следует ли выполнять сжатие и, если да, как определять параметры сжатия.
void setCompressionQuality(float quality)
Задаёт качество сжатия значением от 0 до 1.
void setCompressionType(String compressionType)
Задаёт тип сжатия одним из значений, указанных в getCompressionTypes.
void setProgressiveMode(int mode)
Указывает, что модуль записи должен записать изображение в прогрессивном режиме, чтобы поток содержал последовательность сканирований с возрастающим качеством.
void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset)
Указывает, что изображение следует разбить на плитки в выходном потоке.
void setTilingMode(int mode)
Определяет, будет ли изображение разбито на плитки в выходном потоке и, если да, как будут определяться параметры разбиения.
void unsetTiling()
Удаляет все ранее заданные параметры сетки плиток, указанные вызовами setTiling.

Методы, объявленные в классе IIOParam

activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
Модификатор и тип Метод Описание
boolean activateController()
Активирует установленный объект IIOParamController для этого объекта IIOParam и возвращает полученное значение.
IIOParamController getController()
Возвращает текущий установленный объект IIOParamController.
IIOParamController getDefaultController()
Возвращает объект IIOParamController по умолчанию, если он существует, независимо от установленного в данный момент контроллера.
Point getDestinationOffset()
Возвращает смещение в целевом изображении, в котором будут размещены пиксели.
ImageTypeSpecifier getDestinationType()
Возвращает тип изображения, которое будет возвращено при чтении, если он был задан вызовом setDestination(ImageTypeSpecifier), в виде объекта ImageTypeSpecifier.
int[] getSourceBands()
Возвращает набор используемых полос источника.
Rectangle getSourceRegion()
Возвращает используемую область источника.
int getSourceXSubsampling()
Возвращает количество столбцов источника, пропускаемых для каждого пикселя.
int getSourceYSubsampling()
Возвращает количество строк, пропускаемых для каждого пикселя.
int getSubsamplingXOffset()
Возвращает горизонтальное смещение сетки субдискретизации.
int getSubsamplingYOffset()
Возвращает вертикальное смещение сетки субдискретизации.
boolean hasController()
Возвращает true, если для этого объекта IIOParam установлен контроллер.
void setController(IIOParamController controller)
Задаёт объект IIOParamController, используемый для задания параметров этого объекта IIOParam при вызове метода activateController, переопределяя любой контроллер по умолчанию.
void setDestinationOffset(Point destinationOffset)
Задаёт смещение в целевом изображении, в котором будут размещаться будущие декодированные пиксели при чтении или записываться область при записи.
void setDestinationType(ImageTypeSpecifier destinationType)
Задаёт требуемый тип изображения для целевого изображения с помощью объекта ImageTypeSpecifier.
void setSourceBands(int[] sourceBands)
Задаёт индексы используемых полос источника.
void setSourceRegion(Rectangle sourceRegion)
Задаёт интересующую область источника.
void setSourceSubsampling(int sourceXSubsampling, int sourceYSubsampling, int subsamplingXOffset, int subsamplingYOffset)
Задаёт децимационную субдискретизацию для операций ввода-вывода.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

JPEGImageWriteParam

public JPEGImageWriteParam(Locale locale)
Создает JPEGImageWriteParam. Разбиение на плитки не поддерживается. Прогрессивное кодирование поддерживается. По умолчанию прогрессивный режим — MODE_DISABLED. Поддерживается один тип сжатия с именем "JPEG". Качество сжатия по умолчанию — 0.75.
Параметры:
locale — Locale, используемый суперклассом для локализации названий типов сжатия и описаний качества, или null.

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

unsetCompression

public void unsetCompression()
Удаляет все предыдущие настройки качества сжатия.

Реализация по умолчанию сбрасывает качество сжатия до 0.75F.

Переопределяет:
unsetCompression в классе ImageWriteParam
Выбрасывает:
IllegalStateException — если режим сжатия не равен MODE_EXPLICIT.
См. также:
  • ImageWriteParam.setCompressionType(String)
  • ImageWriteParam.setCompressionQuality(float)

isCompressionLossless

public boolean isCompressionLossless()
Возвращает false, поскольку подключаемый модуль JPEG поддерживает только сжатие с потерями.
Переопределяет:
isCompressionLossless в классе ImageWriteParam
Возвращает:
false.
Выбрасывает:
IllegalStateException — если режим сжатия не равен MODE_EXPLICIT.

areTablesSet

public boolean areTablesSet()
Возвращает true, если таблицы заданы в данный момент.
Возвращает:
true, если таблицы заданы.

setEncodeTables

public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
Задает таблицы квантования и Хаффмана, используемые при кодировании сокращенных потоков. Количество таблиц каждого типа не может превышать 4. Эти таблицы игнорируются, если таблицы указаны в метаданных. Ни один из аргументов не должен быть null. Два массива таблиц Хаффмана должны содержать одинаковое количество элементов. Предполагается, что спецификаторы таблиц в заголовках кадра и сканирования в метаданных соответствуют индексам в этих массивах. Этот метод копирует массивы аргументов.
Параметры:
qTables — массив объектов таблиц квантования.
DCHuffmanTables — массив объектов таблиц Хаффмана.
ACHuffmanTables — массив объектов таблиц Хаффмана.
Выбрасывает:
IllegalArgumentException — если какой-либо аргумент равен null или содержит более 4 элементов, либо если количества таблиц DC и AC различаются.
См. также:
  • unsetEncodeTables()

unsetEncodeTables

public void unsetEncodeTables()
Удаляет все заданные в данный момент таблицы квантования и Хаффмана.
См. также:
  • setEncodeTables(JPEGQTable[], JPEGHuffmanTable[], JPEGHuffmanTable[])

getQTables

public JPEGQTable[] getQTables()
Возвращает копию массива таблиц квантования, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
Возвращает:
массив объектов JPEGQTable или null.
См. также:
  • setEncodeTables(JPEGQTable[], JPEGHuffmanTable[], JPEGHuffmanTable[])

getDCHuffmanTables

public JPEGHuffmanTable[] getDCHuffmanTables()
Возвращает копию массива таблиц Хаффмана DC, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
Возвращает:
массив объектов JPEGHuffmanTable или null.
См. также:
  • setEncodeTables(JPEGQTable[], JPEGHuffmanTable[], JPEGHuffmanTable[])

getACHuffmanTables

public JPEGHuffmanTable[] getACHuffmanTables()
Возвращает копию массива таблиц Хаффмана AC, заданных при последнем вызове setEncodeTables, или null, если таблицы в данный момент не заданы.
Возвращает:
массив объектов JPEGHuffmanTable или null.
См. также:
  • setEncodeTables(JPEGQTable[], JPEGHuffmanTable[], JPEGHuffmanTable[])

setOptimizeHuffmanTables

public void setOptimizeHuffmanTables(boolean optimize)
Указывает средству записи создавать оптимизированные таблицы Хаффмана для изображения в процессе записи. Значение по умолчанию — false. Если этот флаг установлен в true, он переопределяет любые таблицы, указанные в метаданных. Обратите внимание: это означает, что любое изображение, записанное с этим флагом, установленным в true, всегда будет содержать таблицы Хаффмана.
Параметры:
optimize — логическое значение, указывающее, следует ли создавать оптимизированные таблицы Хаффмана при записи.
См. также:
  • getOptimizeHuffmanTables()

getOptimizeHuffmanTables

public boolean getOptimizeHuffmanTables()
Возвращает значение, переданное при последнем вызове setOptimizeHuffmanTables, или false, если setOptimizeHuffmanTables ни разу не вызывался.
Возвращает:
true, если средство записи будет создавать оптимизированные таблицы Хаффмана.
См. также:
  • setOptimizeHuffmanTables(boolean)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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