Класс JPEGImageWriteParam
- java.lang.Object
-
- javax.imageio.IIOParam
-
- javax.imageio.ImageWriteParam
-
- javax.imageio.plugins.jpeg.JPEGImageWriteParam
public class JPEGImageWriteParam extends ImageWriteParam
Этот класс добавляет возможность задавать квантование JPEG и таблицы Хаффмана при использовании встроенного плагина JPEG-писателя и запрашивать вычисление оптимизированных таблиц Хаффмана для изображения. Экземпляр этого класса будет возвращаться из методов getDefaultImageWriteParam встроенного плагина JPEG ImageWriter.
Основная цель этих дополнений — возможность указания таблиц для использования при кодировании сокращённых потоков. Встроенный JPEG-писатель также примет обычный ImageWriteParam, в этом случае писатель сгенерирует необходимые таблицы внутри себя.
В любом случае, настройка качества в ImageWriteParam имеет тот же смысл, что и в базовой библиотеке: 1.00 означает таблицу квантования из всех единиц, 0.75 — «стандартную», визуально без потерь таблицу квантования, а 0.00 — таблицу квантования из всех 255.
Хотя таблицы для сокращённых потоков часто задаются сначала путем записи сокращённого потока, содержащего только таблицы, в некоторых приложениях таблицы фиксируются заранее. Этот класс позволяет задавать таблицы непосредственно из клиентского кода.
Обычно таблицы задаются в объектах IIOMetadata передаваемых писателю, и любые таблицы, включённые в эти объекты, записываются в поток. Если таблицы не заданы в метаданных, то записывается сокращённый поток. Если таблицы не указаны в метаданных и не заданы в JPEGImageWriteParam, то сокращённый поток кодируется с использованием «стандартных» визуально без потерь таблиц. Этот класс необходим для задания таблиц, когда нужно записать сокращённый поток без предварительной записи каких-либо таблиц в поток. Для использования этого класса объект метаданных, передаваемый писателю, не должен содержать таблиц, и метаданные потока не должны быть предоставлены. См. JPEGQTable и JPEGHuffmanTable для получения дополнительной информации о стандартных таблицах.
Стандартные JPEGImageWriteParam возвращаемые методом getDefaultWriteParam писателя не содержат таблиц. Стандартные таблицы включены в стандартные объекты IIOMetadata возвращаемые писателем.
Если метаданные содержат таблицы, таблицы, заданные в JPEGImageWriteParam игнорируются. Кроме того, после записи набора таблиц, только таблицы в метаданных могут их переопределять для последующих записей, как в тот же поток, так и в другой. Для задания новых таблиц с помощью этого класса необходимо вызвать метод reset писателя.
Для получения дополнительной информации об работе встроенных плагинов JPEG, см. спецификацию формата метаданных JPEG и заметки по использованию.
Поля
Поля объявленные в классе javax.imageio.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 Поля объявленные в классе javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset Конструкторы
| Конструктор | Описание |
|---|---|
JPEGImageWriteParam(Locale locale) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean | areTablesSet() | Возвращает |
JPEGHuffmanTable[] | getACHuffmanTables() | Возвращает копию массива таблиц AC Хаффмана, установленных при последнем вызове |
JPEGHuffmanTable[] | getDCHuffmanTables() | Возвращает копию массива таблиц DC Хаффмана, установленных при последнем вызове |
boolean | getOptimizeHuffmanTables() | Возвращает значение, переданное при последнем вызове |
JPEGQTable[] | getQTables() | Возвращает копию массива таблиц квантования, установленных при последнем вызове |
boolean | isCompressionLossless() | Возвращает |
void | setEncodeTables(JPEGQTable[] qTables,
JPEGHuffmanTable[] DCHuffmanTables,
JPEGHuffmanTable[] ACHuffmanTables) | Задаёт таблицы квантования и Хаффмана для использования при кодировании сокращённых потоков. |
void | setOptimizeHuffmanTables(boolean optimize) | Указывает писателю на генерацию оптимизированных таблиц Хаффмана для изображения в процессе записи. |
void | unsetCompression() | Удаляет все предыдущие настройки качества сжатия. |
void | unsetEncodeTables() | Удаляет все текущие таблицы квантования и Хаффмана. |
Методы объявленные в классе javax.imageio.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 Методы объявленные в классе javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling Методы объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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(java.lang.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()
Удаляет любые установленные таблицы квантования и Хаффмана.
getQTables
public JPEGQTable[] getQTables()
Возвращает копию массива таблиц квантования, установленных при последнем вызове setEncodeTables, или null , если таблицы не установлены в данный момент.
- Возвращает:
- массив объектов
JPEGQTable, илиnull. - См. также:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
getDCHuffmanTables
public JPEGHuffmanTable[] getDCHuffmanTables()
Возвращает копию массива таблиц DC Хаффмана, установленных при последнем вызове setEncodeTables, или null , если таблицы не установлены в данный момент.
- Возвращает:
- массив объектов
JPEGHuffmanTable, илиnull. - См. также:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
getACHuffmanTables
public JPEGHuffmanTable[] getACHuffmanTables()
Возвращает копию массива таблиц AC Хаффмана, установленных при последнем вызове setEncodeTables, или null , если таблицы не установлены в данный момент.
- Возвращает:
- массив объектов
JPEGHuffmanTable, илиnull. - См. также:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
setOptimizeHuffmanTables
public void setOptimizeHuffmanTables(boolean optimize)
Указывает автору изображения сгенерировать оптимизированные таблицы Хаффмана в процессе записи. По умолчанию false. Если этот флаг установлен в true, он переопределяет любые таблицы, указанные в метаданных. Обратите внимание, что это означает, что любое записанное изображение с этим флагом, установленным в true, всегда будет содержать таблицы Хаффмана.
- Параметры:
-
optimize- Логическое значение, указывающее, нужно ли генерировать оптимизированные таблицы Хаффмана при записи. - См. также:
getOptimizeHuffmanTables()
getOptimizeHuffmanTables
public boolean getOptimizeHuffmanTables()
Возвращает значение, переданное при последнем вызове setOptimizeHuffmanTables, или false , если setOptimizeHuffmanTables никогда не вызывался.
- Возвращает:
-
true, если автор изображения сгенерирует оптимизированные таблицы Хаффмана. - См. также:
setOptimizeHuffmanTables(boolean)
© 1993, 2020, 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/11/docs/api/java.desktop/javax/imageio/plugins/jpeg/JPEGImageWriteParam.html