Класс 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, установленных при последнем вызове |
String[] |
getCompressionQualityDescriptions() Возвращает массив |
float[] |
getCompressionQualityValues() Возвращает массив |
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, 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.
getCompressionQualityDescriptions
public String[] getCompressionQualityDescriptions()
Описание скопировано из класса: ImageWriteParam
Возвращает массив String , который может быть использован вместе с getCompressionQualityValues в пользовательском интерфейсе для установки или отображения уровня качества сжатия. String с индексом i предоставляет описание диапазона значений качества между getCompressionQualityValues[i] и getCompressionQualityValues[i + 1]. Обратите внимание, что длина массива, возвращаемого getCompressionQualityValues, всегда на один больше, чем длина массива, возвращаемого getCompressionQualityDescriptions.
Например, строки «Хорошо», «Лучше» и «Отлично» могут быть связаны с диапазонами [0, .33), [.33, .66), и [.66, 1.0]. В этом случае getCompressionQualityDescriptions вернёт { "Good", "Better", "Best" }, а getCompressionQualityValues вернёт { 0.0F, .33F, .66F, 1.0F }.
Если описания недоступны, возвращается null. Если из getCompressionQualityValues возвращается null, этот метод также должен вернуть null.
Описания должны быть локализованы для Locale , возвращаемого getLocale, если оно не null.
Если доступно несколько типов сжатия, но ни один из них не задан, будет выброшено исключение IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, и getCompressionTypes() равно null или getCompressionType() не пусто, возвращается null.
- Переопределяет:
-
getCompressionQualityDescriptionsв классеImageWriteParam - Возвращает:
- массив
String, содержащий локализованные описания уровней качества сжатия. - См. также:
ImageWriteParam.getCompressionQualityValues()
getCompressionQualityValues
public float[] getCompressionQualityValues()
Описание скопировано из класса: ImageWriteParam
Возвращает массив float , который может быть использован вместе с getCompressionQualityDescriptions в пользовательском интерфейсе для установки или отображения уровня качества сжатия. Дополнительная информация приведена в getCompressionQualityDescriptions.
Если описания недоступны, возвращается null. Если из getCompressionQualityDescriptions возвращается null, этот метод также должен вернуть null.
Если доступно несколько типов сжатия, но ни один из них не задан, будет выброшено исключение IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, и getCompressionTypes() равно null или getCompressionType() не пусто, возвращается null.
- Переопределяет:
-
getCompressionQualityValuesв классеImageWriteParam - Возвращает:
- массив
float, указывающий границы между уровнями качества сжатия, как описано в массивеStringизgetCompressionQualityDescriptions. - См. также:
ImageWriteParam.getCompressionQualityDescriptions()
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.