Класс ImageWriteParam
- Прямые известные подклассы:
-
BMPImageWriteParam,JPEGImageWriteParam
public class ImageWriteParam extends IIOParam
ImageWriter. Подключенный плагин для конкретного формата изображения может определить подкласс этого класса и возвращать объекты этого класса из метода getDefaultWriteParam реализации его ImageWriter. Например, встроенный плагин-записыватель JPEG вернет экземпляры javax.imageio.plugins.jpeg.JPEGImageWriteParam.
Область изображения, подлежащая записи, определяется путём сначала пересечения фактических границ изображения с прямоугольником, заданным IIOParam.setSourceRegion, если таковой указан. Если полученный прямоугольник имеет ширину или высоту ноль, записыватель вызовет IIOException. Если пересечение не пустое, запись начнется с первого субдискретизированного пикселя и будет включать дополнительные пиксели в пределах пересечения в соответствии с горизонтальными и вертикальными коэффициентами субдискретизации, указанными в IIOParam.setSourceSubsampling.
Отдельные особенности, такие как разбиение на плитки, прогрессивная кодировка и сжатие, могут быть установлены в одном из четырёх режимов. MODE_DISABLED отключает эти особенности; MODE_DEFAULT включает функцию с параметрами, контролируемыми записывателем; MODE_EXPLICIT включает функцию и позволяет использовать метод set для предоставления дополнительных параметров; и MODE_COPY_FROM_METADATA копирует соответствующие значения параметров из объекта потока и метаданных изображения, переданных записывателю. По умолчанию все функции установлены в MODE_COPY_FROM_METADATA. Поддерживаются нестандартные функции, реализованные в подклассах, но они не обязательны для использования аналогичной схемы.
Плагин-записыватели могут расширить функциональность ImageWriteParam путём предоставления подкласса, реализующего дополнительные, специфичные для плагина интерфейсы. Плагин должен документировать доступные интерфейсы и то, как ими пользоваться. Записыватели проигнорируют любые расширенные функции подкласса ImageWriteParam, о которых им не известно. Кроме того, они могут игнорировать любые необязательные функции, которые они обычно отключают при создании собственных экземпляров ImageWriteParam с помощью getDefaultWriteParam.
Обратите внимание, что, если метод запроса для какой-либо возможности не существует, она должна поддерживаться всеми реализациями ImageWriter (например, прогрессивная кодировка является необязательной, но субдискретизация должна поддерживаться).
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 если параметры разбиения на плитки были заданы. |
Поля, объявленные в классе javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт пустой ImageWriteParam. |
|
| Создаёт ImageWriteParam настроенный на использование заданного Locale. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canOffsetTiles() |
Возвращает true если писатель может выполнить мозаичное разбиение с ненулевыми смещениями сетки при записи. |
boolean |
canWriteCompressed() |
Возвращает true если данный писатель поддерживает сжатие. |
boolean |
canWriteProgressive() |
Возвращает true если писатель может записать изображения как серию проходов с постоянно возрастающим качеством. |
boolean |
canWriteTiles() |
Возвращает true если писатель может выполнить мозаичное разбиение при записи. |
float |
getBitRate |
Возвращает 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() |
Возвращает текущий режим мозаичного разбиения, если оно поддерживается. |
boolean |
isCompressionLossless() |
Возвращает true если текущий тип сжатия обеспечивает без потерь сжатие. |
void |
setCompressionMode |
Указывает, должно ли выполняться сжатие, и если да, то как определяются параметры сжатия. |
void |
setCompressionQuality |
Устанавливает качество сжатия на значение от 0 до 1. |
void |
setCompressionType |
Устанавливает тип сжатия на одно из значений, указанных в getCompressionTypes. |
void |
setProgressiveMode |
Указывает, что писатель должен записать изображение в пошаговом режиме, так что поток будет содержать серию сканирований с возрастающим качеством. |
void |
setTiling |
Указывает, что изображение должно быть разбито на плитки в выходном потоке. |
void |
setTilingMode |
Определяет, будет ли изображение разбито на плитки в выходном потоке и, если да, то как будут определяться параметры разбиения на плитки. |
void |
unsetCompression() |
Удаляет все предыдущие параметры типа и качества сжатия. |
void |
unsetTiling() |
Удаляет все предыдущие параметры сетки плиток, заданные вызовами setTiling. |
Методы, объявленные в классе javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
Подробное описание полей
MODE_DISABLED
public static final int MODE_DISABLED
setTilingMode, setProgressiveMode, и setCompressionMode, для отключения функции для будущих записей. То есть, когда этот режим установлен, поток не будет разбит на плитки, не будет прогрессивным и не будет сжат, а соответствующие методы доступа будут выбрасывать IllegalStateException. - См. также:
MODE_DEFAULT
public static final int MODE_DEFAULT
setTilingMode, setProgressiveMode, и setCompressionMode, для включения этой функции для будущих записей. То есть, когда этот режим включен, поток будет разбит на плитки, будет прогрессивным или сжат в соответствии с разумным значением по умолчанию, выбранным внутри системой записи в зависимости от плагина, и соответствующие методы доступа будут выбрасывать IllegalStateException. - См. также:
MODE_EXPLICIT
public static final int MODE_EXPLICIT
setTilingMode или setCompressionMode, для включения функции для будущих записей. То есть, когда этот режим установлен, поток будет разбит на плитки или сжат в соответствии с дополнительной информацией, предоставленной соответствующим методам set в этом классе и извлекаемой из соответствующих методов get. Обратите внимание, что этот режим не поддерживается для прогрессивного вывода.- См. также:
MODE_COPY_FROM_METADATA
public static final int MODE_COPY_FROM_METADATA
setTilingMode, setProgressiveMode, или setCompressionMode, для включения этой функции для будущих записей. То есть, когда этот режим включен, поток будет разбит на плитки, прогрессивным или сжат на основе содержимого потока и/или метаданных изображения, переданных в операцию записи, и любые соответствующие методы доступа будут выбрасывать IllegalStateException. Это режим по умолчанию для всех функций, чтобы чтение с метаданными, за которым следует запись с метаданными, сохраняло как можно больше информации.
- См. также:
canWriteTiles
protected boolean canWriteTiles
boolean если это true позволяет устанавливать параметры ширины и высоты плиток. По умолчанию значение равно false. Подклассы должны установить значение вручную. Подклассы, которые не поддерживают запись плиток, должны убедиться, что это значение установлено в false.
tilingMode
protected int tilingMode
MODE_* значений. Значение по умолчанию равно MODE_COPY_FROM_METADATA. Подклассы, которые не пишут плитки, могут игнорировать это значение.
- См. также:
preferredTileSizes
protected Dimension[] preferredTileSizes
null, что указывает на отсутствие предпочтительных размеров. Если значение не null, оно должно иметь четную длину не менее двух. Подклассы, которые не поддерживают запись плиток, могут игнорировать это значение.
- См. также:
tilingSet
protected boolean tilingSet
true если параметры разбивки на плитки были заданы. Подклассы, которые не поддерживают запись плиток, могут игнорировать это значение.
tileWidth
protected int tileWidth
Подклассы, которые не поддерживают разбивку на плитки, могут игнорировать это значение.
tileHeight
protected int tileHeight
0. Подклассы, которые не поддерживают разбивку на плитки, могут игнорировать это значение.
canOffsetTiles
protected boolean canOffsetTiles
true если это ImageWriteParam позволяет устанавливать параметры смещения сетки плиток. По умолчанию значение равно false. Подклассы должны установить значение вручную. Подклассы, которые не поддерживают запись плиток или поддерживают запись, но не смещение плиток, должны убедиться, что это значение установлено в false.
tileGridXOffset
protected int tileGridXOffset
0. Подклассы, которые не поддерживают смещение плиток, могут игнорировать это значение.
tileGridYOffset
protected int tileGridYOffset
0. Подклассы, которые не поддерживают смещение плиток, могут игнорировать это значение.
canWriteProgressive
protected boolean canWriteProgressive
true если это ImageWriteParam позволяет записывать изображения как прогрессивную последовательность проходов с улучшающимся качеством. По умолчанию значение равно false. Подклассы должны установить значение вручную. Подклассы, которые не поддерживают прогрессивное кодирование, должны убедиться, что это значение установлено в false.
progressiveMode
protected int progressiveMode
MODE_* значений, кроме MODE_EXPLICIT. Значение по умолчанию равно MODE_COPY_FROM_METADATA. Подклассы, которые не поддерживают прогрессивное кодирование, могут игнорировать это значение.
- См. также:
canWriteCompressed
protected boolean canWriteCompressed
false. Подклассы должны устанавливать значение вручную. Подклассы, не поддерживающие сжатие, должны убедиться, что это значение установлено в false.
compressionMode
protected int compressionMode
MODE_* значений. По умолчанию значение равно MODE_COPY_FROM_METADATA. Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
- См. также:
compressionTypes
protected String[] compressionTypes
String содержащий имена доступных типов сжатия. Подклассы должны устанавливать значение вручную. Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
compressionType
protected String compressionType
null, если тип не задан. Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
compressionQuality
protected float compressionQuality
1.0F. Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
locale
protected Locale locale
Locale для локализации имён типов сжатия и описаний качества, или null для использования по умолчанию Locale. Подклассы должны устанавливать значение вручную.Подробное описание конструкторов
ImageWriteParam
protected ImageWriteParam()
ImageWriteParam. Подкласс отвечает за корректную инициализацию переменных.ImageWriteParam
public ImageWriteParam(Locale locale)
ImageWriteParam с использованием заданного Locale. - Параметры:
-
locale- объектLocaleдля локализации имён типов сжатия и описаний качества, илиnull.
Подробное описание методов
getLocale
public Locale getLocale()
Locale, или null если поддерживается только по умолчанию Locale. - Возвращает:
- текущий
Locale, илиnull.
canWriteTiles
public boolean canWriteTiles()
true если записыватель может выполнять разбиение на плитки при записи. Если этот метод возвращает false, то setTiling выбросит UnsupportedOperationException.- Возвращает:
-
trueесли записыватель поддерживает разбиение на плитки. - См. также:
canOffsetTiles
public boolean canOffsetTiles()
true если записыватель может выполнять разбиение на плитки с не нулевыми смещениями сетки при записи. Если этот метод возвращает false, то setTiling выбросит UnsupportedOperationException если аргументы смещения сетки не равны нулю. Если canWriteTiles возвращает false, этот метод вернёт false.- Возвращает:
-
trueесли записыватель поддерживает смещения плиток. - См. также:
setTilingMode
public void setTilingMode(int mode)
-
MODE_DISABLED- изображение не будет разбито на плитки.setTilingвыброситIllegalStateException. -
MODE_DEFAULT- изображение будет разбито на плитки с использованием параметров по умолчанию.setTilingвыброситIllegalStateException. -
MODE_EXPLICIT- изображение будет разбито на плитки в соответствии с параметрами, заданными в методеsetTiling. Любые ранее установленные параметры разбиения на плитки будут отброшены. -
MODE_COPY_FROM_METADATA- изображение будет соответствовать метаданным, переданным в объект write.setTilingвыброситIllegalStateException.
- Параметры:
-
mode- Режим, используемый для разбиения на плитки. - Исключение:
-
UnsupportedOperationException- еслиcanWriteTilesвозвращаетfalse. -
IllegalArgumentException- еслиmodeне соответствует ни одному из перечисленных режимов. - См. также:
getTilingMode
public int getTilingMode()
UnsupportedOperationException.- Возвращает:
- текущий режим разбиения на плитки.
- Исключение:
-
UnsupportedOperationException- еслиcanWriteTilesвозвращаетfalse. - См. также:
getPreferredTileSizes
public Dimension[] getPreferredTileSizes()
Dimension указывающий допустимые диапазоны размеров плиток, как они будут закодированы в выходном файле или потоке. Возвращаемый массив является копией. Информация возвращается как набор пар; первый элемент пары содержит минимальную ширину и высоту (включительно), а второй элемент содержит максимальную ширину и высоту (включительно). Вместе каждая пара определяет допустимый диапазон размеров. Для указания фиксированного размера используйте одинаковую ширину и высоту для обоих элементов. Для указания произвольного диапазона используется значение null вместо фактического массива Dimension.
Если массив не задан в конструкторе, но разбиение на плитки разрешено, то этот метод возвращает null.
- Возвращает:
- массив
Dimensionс чётной длиной не менее двух, илиnull. - Исключение:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на плитки.
setTiling
public void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset)
tileWidth и tileHeight задают ширину и высоту плиток в файле. Если ширина или высота плитки больше ширины или высоты изображения, изображение не разбивается на плитки в этом измерении. Если canOffsetTiles возвращает false, то параметры tileGridXOffset и tileGridYOffset должны быть равны нулю.
- Параметры:
-
tileWidth- ширина каждой плитки. -
tileHeight- высота каждой плитки. -
tileGridXOffset- горизонтальное смещение сетки плиток. -
tileGridYOffset- вертикальное смещение сетки плиток. - Исключение:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на плитки. -
IllegalStateException- если режим разбиения на плитки неMODE_EXPLICIT. -
UnsupportedOperationException- если плагин не поддерживает смещения сетки, и смещения сетки не равны нулю. -
IllegalArgumentException- если размер плитки не входит в один из разрешенных диапазонов, возвращаемыхgetPreferredTileSizes. -
IllegalArgumentException- еслиtileWidthилиtileHeightменьше или равны 0. - См. также:
unsetTiling
public void unsetTiling()
setTiling. Реализация по умолчанию устанавливает переменные экземпляра tileWidth, tileHeight, tileGridXOffset, и tileGridYOffset в 0.
- Исключение:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на плитки. -
IllegalStateException- если режим разбиения на плитки неMODE_EXPLICIT. - См. также:
Ширина тайла
public int getTileWidth()
IllegalStateException. - Возвращает:
- ширину тайла, используемую для кодирования.
- Выбрасывает:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
Высота тайла
public int getTileHeight()
IllegalStateException.- Возвращает:
- высоту тайла, используемую для кодирования.
- Выбрасывает:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
Смещение тайловой сетки по горизонтали
public int getTileGridXOffset()
IllegalStateException.- Возвращает:
- горизонтальное смещение тайловой сетки для кодирования.
- Выбрасывает:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
Смещение тайловой сетки по вертикали
public int getTileGridYOffset()
IllegalStateException.- Возвращает:
- вертикальное смещение тайловой сетки для кодирования.
- Выбрасывает:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
Поддержка послойной записи
public boolean canWriteProgressive()
true, если записыватель может записывать изображения как серию проходов, постепенно увеличивающих качество.- Возвращает:
-
trueесли записыватель поддерживает послойное кодирование. - См. также:
Установить режим послойной записи
public void setProgressiveMode(int mode)
UnsupportedOperationException. Аргумент режима определяет, как выбираются параметры прогрессии, и должен быть либо MODE_DISABLED, либо MODE_COPY_FROM_METADATA, либо MODE_DEFAULT. В противном случае будет выброшено IllegalArgumentException.
Режимы интерпретируются следующим образом:
-
MODE_DISABLED- Отсутствует прогрессия. Используйте это, чтобы отключить прогрессию. -
MODE_COPY_FROM_METADATA- Выходное изображение будет использовать любые параметры прогрессии, которые найдены в объектах метаданных, переданных в записыватель. -
MODE_DEFAULT- Изображение будет записано послойно, с параметрами, выбранными записывателем.
По умолчанию MODE_COPY_FROM_METADATA.
- Параметры:
-
mode- Режим установки прогрессии в выходном потоке. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает послойное кодирование. -
IllegalArgumentException- еслиmodeне является одним из перечисленных выше режимов. - См. также:
Получить текущий режим послойной записи
public int getProgressiveMode()
- Возвращает:
- текущий режим послойного кодирования.
- Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает послойное кодирование. - См. также:
Поддержка сжатия
public boolean canWriteCompressed()
true, если этот записыватель поддерживает сжатие.- Возвращает:
-
trueесли записыватель поддерживает сжатие.
Установить режим сжатия
public void setCompressionMode(int mode)
mode должен быть одним из четырех режимов, интерпретируемых следующим образом: -
MODE_DISABLED- Если режим установлен наMODE_DISABLED, методы, которые запрашивают или изменяют тип сжатия или параметры, выбросятIllegalStateException(если сжатие обычно поддерживается плагином). Некоторые записыватели, такие как JPEG, обычно не предлагают несжатый вывод. В этом случае попытка установить режим наMODE_DISABLEDвыброситUnsupportedOperationExceptionи режим не будет изменён. -
MODE_EXPLICIT- Сжать, используя тип и настройки качества сжатия, указанные в этомImageWriteParam. Любые ранее установленные параметры сжатия игнорируются. -
MODE_COPY_FROM_METADATA- Используйте любые параметры сжатия, указанные в объектах метаданных, переданных в записыватель. -
MODE_DEFAULT- Используйте параметры сжатия по умолчанию.
По умолчанию MODE_COPY_FROM_METADATA.
- Параметры:
-
mode- Режим установки сжатия в выходном потоке. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие или не поддерживает запрошенный режим. -
IllegalArgumentException- еслиmodeне является одним из перечисленных выше режимов. - См. также:
Получить текущий режим сжатия
public int getCompressionMode()
- Возвращает:
- текущий режим сжатия.
- Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. - См. также:
Типы доступного сжатия
public String[] getCompressionTypes()
String, или null, если тип сжатия нельзя выбрать с помощью этих интерфейсов. Возвращаемый массив является копией. Если записыватель предлагает только один обязательный вид сжатия, нет необходимости предоставлять какие-либо именованные типы сжатия. Именные типы сжатия должны использоваться только там, где пользователь может сделать осмысленный выбор между различными схемами.
Реализация по умолчанию проверяет поддержку сжатия и выбросит UnsupportedOperationException если нет. В противном случае она возвращает клон переменной compressionTypes, если она не null, иначе возвращает null.
- Возвращает:
- массив
Stringс именами доступных типов сжатия (не локализованных), илиnull. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие.
Установить тип сжатия
public void setCompressionType(String compressionType)
getCompressionTypes. Если значение null передано, любое предыдущее значение удаляется. Реализация по умолчанию проверяет, поддерживается ли сжатие и режим сжатия MODE_EXPLICIT. В таком случае она вызывает getCompressionTypes и проверяет, является ли compressionType одним из допустимых значений. Если это так, переменная compressionType устанавливается. Если compressionType равно null, переменная устанавливается без выполнения каких-либо проверок.
- Параметры:
-
compressionType- одно изStrings, возвращаемыхgetCompressionTypes, илиnullдля удаления любого предыдущего значения. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
UnsupportedOperationException- если нет настраиваемых типов сжатия. -
IllegalArgumentException- еслиcompressionTypeне null, но не является одним из значений, возвращаемыхgetCompressionTypes. - См. также:
getCompressionType
public String getCompressionType()
null , если тип не был задан. Тип возвращается в виде String из числа тех, что возвращаются getCompressionTypes. Если тип сжатия не был задан, возвращается null. Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, возвращает значение переменной экземпляра compressionType.
- Returns:
- текущий тип сжатия в виде
String, илиnull, если тип не задан. - Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. - See Also:
unsetCompression
public void unsetCompression()
Реализация по умолчанию устанавливает переменную экземпляра compressionType в null, а переменную экземпляра compressionQuality в 1.0F.
- Throws:
-
UnsupportedOperationException- если плагин не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. - See Also:
getLocalizedCompressionTypeName
public String getLocalizedCompressionTypeName()
Locale , возвращаемое getLocale. Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, если compressionType равно non-null, возвращается значение getCompressionType для удобства.
- Returns:
- a
Stringсодержащий локализованную версию имени текущего типа сжатия. - Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если тип сжатия не задан.
isCompressionLossless
public boolean isCompressionLossless()
true, если текущий тип сжатия обеспечивает без потерь. Если плагин предоставляет только один обязательный тип сжатия, этот метод можно вызвать без предварительного вызова setCompressionType. Если существует несколько типов сжатия, но ни один не был задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, если getCompressionTypes() равно null или getCompressionType() не null true возвращается для удобства.
- Returns:
-
trueесли текущий тип сжатия без потерь. - Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull.
setCompressionQuality
public void setCompressionQuality(float quality)
0 до 1. По умолчанию поддерживается только одно значение качества сжатия; писатели могут предоставить расширенные версии ImageWriteParam, которые предлагают больший контроль. Для схем сжатия с потерями качество сжатия должно управлять компромиссом между размером файла и качеством изображения (например, выбирая таблицы квантования при записи изображений JPEG). Для схем без потерь качество сжатия может использоваться для управления компромиссом между размером файла и временем, необходимым для выполнения сжатия (например, оптимизируя фильтры строк и устанавливая уровень сжатия ZLIB при записи изображений PNG). Значение качества сжатия 0,0 наиболее универсально интерпретируется как "важно высокое сжатие", а значение 1,0 — как "важно высокое качество изображения".
Если существует несколько типов сжатия, но ни один не был задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие, и соответствует ли режим сжатия MODE_EXPLICIT. Если да, если getCompressionTypes() возвращает null или compressionType не null, она устанавливает переменную экземпляра compressionQuality.
- Parameters:
-
quality- afloatот0до1, указывающее желаемый уровень качества. - Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. -
IllegalArgumentException- еслиqualityне находится в диапазоне от0до1, включительно. - See Also:
getCompressionQuality
public float getCompressionQuality()
Если существует несколько типов сжатия, но ни один не был задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, если getCompressionTypes() равно null или getCompressionType() не null, она возвращает значение переменной экземпляра compressionQuality.
- Returns:
- текущее значение качества сжатия.
- Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - See Also:
getBitRate
public float getBitRate(float quality)
float , указывающее оценку количества битов выходных данных для каждого бита входных данных изображения при заданном уровне качества. Значение обычно находится в диапазоне от 0 до 1, где меньшие значения указывают на большее сжатие. Специальное значение -1.0F используется для указания того, что оценка недоступна. Если существует несколько типов сжатия, но ни один не был задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и соответствует ли режим сжатия MODE_EXPLICIT. Если да, если getCompressionTypes() равно null или getCompressionType() не null, и quality находится в допустимых пределах, она возвращает -1.0.
- Parameters:
-
quality- значение качества, битрейт которого необходимо запросить. - Returns:
- оценка битрейта сжатия или
-1.0F, если оценка недоступна. - Throws:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. -
IllegalArgumentException- еслиqualityне находится в диапазоне от0до1, включительно.
Получение описаний качества сжатия
public String[] getCompressionQualityDescriptions()
Strings, которые могут использоваться вместе с 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. Если null возвращается из getCompressionQualityValues, этот метод также должен вернуть null.
Описания должны быть локализованы для Locale , возвращаемого getLocale, если оно не null.
Если существует несколько типов сжатия, но ни один не задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и является ли режим сжатия MODE_EXPLICIT. В случае успеха, если getCompressionTypes() равно null или getCompressionType() не null, возвращается null.
- Возвращает:
- массив
Strings, содержащий локализованные описания уровней качества сжатия. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - См. также:
Получение значений качества сжатия
public float[] getCompressionQualityValues()
floats, которые могут быть использованы вместе с getCompressionQualityDescriptions в пользовательском интерфейсе для установки или отображения уровня качества сжатия. Дополнительную информацию см. в getCompressionQualityDescriptions.
Если описания недоступны, возвращается null. Если null возвращается из getCompressionQualityDescriptions, этот метод также должен вернуть null.
Если существует несколько типов сжатия, но ни один не задан, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и является ли режим сжатия MODE_EXPLICIT. В случае успеха, если getCompressionTypes() равно null или getCompressionType() не null, возвращается null.
- Возвращает:
- массив
floats, указывающий границы между уровнями качества сжатия, как описано вStrings изgetCompressionQualityDescriptions. - Выбрасывает:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - См. также:
© 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/ImageWriteParam.html