Spec-Zone.ru › OpenJDK 8

Класс 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)

Создает JPEGImageWriteParam.

Сводка методов

Модификатор и тип Метод и описание
boolean areTablesSet()

Возвращает true, если таблицы в настоящее время установлены.

JPEGHuffmanTable[] getACHuffmanTables()

Возвращает копию массива таблиц Хаффмана AC, установленных при последнем вызове setEncodeTables, или null, если таблицы не установлены в данный момент.

String[] getCompressionQualityDescriptions()

Возвращает массив String , которые могут быть использованы вместе с getCompressionQualityValues в качестве части пользовательского интерфейса для установки или отображения уровня качества сжатия.

float[] getCompressionQualityValues()

Возвращает массив float , которые могут быть использованы вместе с getCompressionQualityDescriptions в качестве части пользовательского интерфейса для установки или отображения уровня качества сжатия.

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()

Удаляет любые таблицы квантования и Хаффмана, которые в данный момент установлены.

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

Удаляет все установленные таблицы квантования и Хаффмана.

См. также:
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])

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.

Spec-Zone.ru

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