Класс ImageWriteParam
- java.lang.Object
-
- javax.imageio.IIOParam
-
- javax.imageio.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 (например, прогрессивная кодировка необязательна, но субдискретизация должна поддерживаться).
- См. также:
ImageReadParam
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected boolean |
canOffsetTiles Объект |
protected boolean |
canWriteCompressed Объект |
protected boolean |
canWriteProgressive Объект |
protected boolean |
canWriteTiles Объект |
protected int |
compressionMode Режим, управляющий настройками сжатия, который должен быть установлен на одно из четырёх значений |
protected float |
compressionQuality Объект |
protected String |
compressionType Объект |
protected String[] |
compressionTypes Массив |
protected Locale |
locale Объект |
static int |
MODE_COPY_FROM_METADATA Постоянное значение, которое может быть передано в методы, такие как |
static int |
MODE_DEFAULT Постоянное значение, которое может быть передано в методы, такие как |
static int |
MODE_DISABLED Постоянное значение, которое может быть передано в методы, такие как |
static int |
MODE_EXPLICIT Постоянное значение, которое может быть передано в методы, такие как |
protected Dimension[] |
preferredTileSizes Массив пар диапазонов предпочтительных размеров плиток. |
protected int |
progressiveMode Режим, контролирующий прогрессивную кодировку, который должен быть установлен на одно из четырёх значений |
protected int |
tileGridXOffset Величина горизонтального смещения начала сетки плиток от начала изображения, если мозаичность установлена, иначе 0. |
protected int |
tileGridYOffset Величина вертикального смещения начала сетки плиток от начала изображения, если мозаичность установлена, иначе 0. |
protected int |
tileHeight Высота каждой плитки, если мозаичность установлена, иначе 0. |
protected int |
tileWidth Ширина каждой плитки, если мозаичность установлена, иначе 0. |
protected int |
tilingMode Режим, контролирующий настройки мозаичности, который должен быть установлен на одно из четырёх значений |
protected boolean |
tilingSet Объект |
Поля, унаследованные от класса javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
ImageWriteParam() Создаёт пустой |
ImageWriteParam(Locale locale) Создаёт |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
canOffsetTiles() Возвращает |
boolean |
canWriteCompressed() Возвращает |
boolean |
canWriteProgressive() Возвращает |
boolean |
canWriteTiles() Возвращает |
float |
getBitRate(float quality) Возвращает |
int |
getCompressionMode() Возвращает текущий режим сжатия, если сжатие поддерживается. |
float |
getCompressionQuality() Возвращает текущее значение качества сжатия. |
String[] |
getCompressionQualityDescriptions() Возвращает массив |
float[] |
getCompressionQualityValues() Возвращает массив |
String |
getCompressionType() Возвращает текущий тип сжатия или |
String[] |
getCompressionTypes() Возвращает список доступных типов сжатия в виде массива или |
Locale |
getLocale() Возвращает текущее значение |
String |
getLocalizedCompressionTypeName() Возвращает локализованное имя текущего типа сжатия, используя |
Dimension[] |
getPreferredTileSizes() Возвращает массив |
int |
getProgressiveMode() Возвращает текущий режим записи потока в пошаговом режиме. |
int |
getTileGridXOffset() Возвращает горизонтальное смещение сетки плиток изображения, как оно будет записано в выходной поток. |
int |
getTileGridYOffset() Возвращает вертикальное смещение сетки плиток изображения, как оно будет записано в выходной поток. |
int |
getTileHeight() Возвращает высоту каждой плитки в изображении, как она будет записана в выходной поток. |
int |
getTileWidth() Возвращает ширину каждой плитки в изображении, как она будет записана в выходной поток. |
int |
getTilingMode() Возвращает текущий режим чередования, если чередование поддерживается. |
boolean |
isCompressionLossless() Возвращает |
void |
setCompressionMode(int mode) Указывает, должно ли производиться сжатие, и если да, то как должны определяться параметры сжатия. |
void |
setCompressionQuality(float quality) Устанавливает качество сжатия в значение от |
void |
setCompressionType(String compressionType) Устанавливает тип сжатия на одно из значений, указанных в |
void |
setProgressiveMode(int mode) Указывает, что писатель должен записать изображение в пошаговом режиме, так что поток будет содержать серию сканирований с возрастающим качеством. |
void |
setTiling(int tileWidth,
int tileHeight,
int tileGridXOffset,
int tileGridYOffset) Указывает, что изображение должно быть разложено на плитки в выходном потоке. |
void |
setTilingMode(int mode) Определяет, будет ли изображение разбито на плитки в выходном потоке и, если да, как будут определены параметры разбивки на плитки. |
void |
unsetCompression() Удаляет все предыдущие типы и параметры качества сжатия. |
void |
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 Поля
MODE_DISABLED
public static final int MODE_DISABLED
Постоянное значение, которое может быть передано в методы, такие как setTilingMode, setProgressiveMode, и setCompressionMode, чтобы отключить функцию для будущих записей. То есть, когда этот режим установлен, поток не будет разбит на плитки, не будет прогрессивным и не будет сжат, а соответствующие методы доступа будут выбрасывать IllegalStateException.
- См. также:
-
MODE_EXPLICIT,MODE_COPY_FROM_METADATA,MODE_DEFAULT,setProgressiveMode(int),getProgressiveMode(),setTilingMode(int),getTilingMode(),setCompressionMode(int),getCompressionMode(), Значения постоянных полей
MODE_DEFAULT
public static final int MODE_DEFAULT
Постоянное значение, которое может быть передано в методы, такие как setTilingMode, setProgressiveMode, и setCompressionMode, чтобы включить эту функцию для будущих записей. То есть, когда этот режим включен, поток будет разбит на плитки, прогрессивным или сжатым в соответствии с разумным значением по умолчанию, выбранным внутри плагином, зависящим от плагина способом, а соответствующие методы доступа будут выбрасывать IllegalStateException.
- См. также:
-
MODE_DISABLED,MODE_EXPLICIT,MODE_COPY_FROM_METADATA,setProgressiveMode(int),getProgressiveMode(),setTilingMode(int),getTilingMode(),setCompressionMode(int),getCompressionMode(), Значения постоянных полей
MODE_EXPLICIT
public static final int MODE_EXPLICIT
Постоянное значение, которое может быть передано в методы, такие как setTilingMode или setCompressionMode для включения функции для будущих записей. То есть, когда этот режим установлен, поток будет разбит на плитки или сжат в соответствии с дополнительной информацией, предоставленной соответствующим методам set в этом классе и извлекаемой из соответствующих методов get. Обратите внимание, что этот режим не поддерживается для прогрессивного вывода.
- См. также:
-
MODE_DISABLED,MODE_COPY_FROM_METADATA,MODE_DEFAULT,setProgressiveMode(int),getProgressiveMode(),setTilingMode(int),getTilingMode(),setCompressionMode(int),getCompressionMode(), Значения постоянных полей
MODE_COPY_FROM_METADATA
public static final int MODE_COPY_FROM_METADATA
Постоянное значение, которое может быть передано в методы, такие как setTilingMode, setProgressiveMode, или setCompressionMode, чтобы включить эту функцию для будущих записей. То есть, когда этот режим включен, поток будет разбит на плитки, прогрессивным или сжат на основе содержимого потока и/или метаданных изображения, переданных в операцию записи, и любые соответствующие методы доступа будут выбрасывать IllegalStateException.
Это режим по умолчанию для всех функций, чтобы чтение, включающее метаданные, за которым следует запись, включающая метаданные, сохраняла как можно больше информации.
- См. также:
-
MODE_DISABLED,MODE_EXPLICIT,MODE_DEFAULT,setProgressiveMode(int),getProgressiveMode(),setTilingMode(int),getTilingMode(),setCompressionMode(int),getCompressionMode(), Значения постоянных полей
canWriteTiles
protected boolean canWriteTiles
Значение, которое равно true, если этот ImageWriteParam позволяет задавать параметры ширины и высоты плиток. По умолчанию значение равно false. Подклассы должны устанавливать значение вручную.
Подклассы, которые не поддерживают запись плиток, должны убедиться, что это значение установлено в false.
tilingMode
protected int tilingMode
Режим, контролирующий настройки разбивки на плитки, который должен быть установлен в одно из четырех MODE_* значений. Значение по умолчанию - MODE_COPY_FROM_METADATA.
Подклассы, которые не поддерживают запись плиток, могут игнорировать это значение.
- См. также:
-
MODE_DISABLED,MODE_EXPLICIT,MODE_COPY_FROM_METADATA,MODE_DEFAULT,setTilingMode(int),getTilingMode()
preferredTileSizes
protected Dimension[] preferredTileSizes
Массив пар диапазонов предпочтительных размеров плитки. Значение по умолчанию - null, что указывает на отсутствие предпочтительных размеров. Если значение не null, оно должно иметь чётную длину не менее двух.
Подклассы, которые не поддерживают запись плиток, могут игнорировать это значение.
- См. также:
getPreferredTileSizes()
tilingSet
protected boolean tilingSet
Значение, которое равно true, если параметры разбивки на плитки были заданы.
Подклассы, которые не поддерживают запись плиток, могут игнорировать это значение.
tileWidth
protected int tileWidth
Ширина каждой плитки, если разбивка на плитки установлена, иначе 0.
Подклассы, которые не поддерживают разбивку на плитки, могут игнорировать это значение.
tileHeight
protected int tileHeight
Высота каждой плитки, если разбивка на плитки установлена, иначе 0. Начальное значение - 0.
Подклассы, которые не поддерживают разбивку на плитки, могут игнорировать это значение.
canOffsetTiles
protected boolean canOffsetTiles
Значение, которое равно true, если этот ImageWriteParam позволяет задавать параметры смещения сетки плиток. По умолчанию значение равно false. Подклассы должны устанавливать значение вручную.
Подклассы, которые не поддерживают запись плиток или которые поддерживают запись, но не смещение плиток, должны убедиться, что это значение установлено в false.
tileGridXOffset
protected int tileGridXOffset
Сдвиг, на который следует сместить начало сетки плиток по горизонтали от начала изображения, если разбивка на плитки установлена, иначе 0. Начальное значение - 0.
Подклассы, которые не поддерживают смещение плиток, могут игнорировать это значение.
tileGridYOffset
protected int tileGridYOffset
Сдвиг, на который следует сместить начало сетки плиток по вертикали от начала изображения, если разбивка на плитки установлена, иначе 0. Начальное значение - 0.
Подклассы, которые не поддерживают смещение плиток, могут игнорировать это значение.
canWriteProgressive
protected boolean canWriteProgressive
Значение, которое равно true, если этот ImageWriteParam позволяет записывать изображения как прогрессивную последовательность проходов с увеличением качества. По умолчанию значение равно false. Подклассы должны устанавливать значение вручную.
Подклассы, которые не поддерживают прогрессивное кодирование, должны убедиться, что это значение установлено в false.
progressiveMode
protected int progressiveMode
Режим, контролирующий прогрессивное кодирование, который должен быть установлен в одно из четырех MODE_* значений, за исключением MODE_EXPLICIT. Значение по умолчанию - MODE_COPY_FROM_METADATA.
Подклассы, которые не поддерживают прогрессивное кодирование, могут игнорировать это значение.
- См. также:
-
MODE_DISABLED,MODE_EXPLICIT,MODE_COPY_FROM_METADATA,MODE_DEFAULT,setProgressiveMode(int),getProgressiveMode()
canWriteCompressed
protected boolean canWriteCompressed
Значение, которое равно true, если этот писатель может записывать изображения с использованием сжатия. По умолчанию значение равно false. Подклассы должны устанавливать значение вручную.
Подклассы, которые не поддерживают сжатие, должны убедиться, что это значение установлено в false.
compressionMode
protected int compressionMode
Режим, контролирующий настройки сжатия, который должен быть установлен в одно из четырех MODE_* значений. Значение по умолчанию - MODE_COPY_FROM_METADATA.
Подклассы, которые не поддерживают сжатие, могут игнорировать это значение.
- См. также:
-
MODE_DISABLED,MODE_EXPLICIT,MODE_COPY_FROM_METADATA,MODE_DEFAULT,setCompressionMode(int),getCompressionMode()
compressionTypes
protected String[] compressionTypes
Массив String содержащий названия доступных типов сжатия. Подклассы должны устанавливать значение вручную.
Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
compressionType
protected String compressionType
String содержащий имя текущего типа сжатия, или null, если не задано.
Подклассы, не поддерживающие сжатие, могут игнорировать это значение.
compressionQuality
protected float compressionQuality
float содержащий текущую настройку качества сжатия. Начальное значение — 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(),setTiling(int, int, int, int)
canOffsetTiles
public boolean canOffsetTiles()
Возвращает true, если модуль записи может выполнять разбиение на тайлы с ненулевыми смещениями сетки при записи. Если этот метод возвращает false, то setTiling выбросит UnsupportedOperationException если аргументы смещения сетки не оба равны нулю. Если canWriteTiles возвращает false, этот метод также вернёт false.
- Возвращает:
-
trueесли модуль записи поддерживает ненулевые смещения тайлов. - См. также:
-
canWriteTiles(),setTiling(int, int, int, int)
setTilingMode
public void setTilingMode(int mode)
Определяет, будет ли изображение разбито на тайлы в выходном потоке и, если будет, как будут определены параметры разбиения. Режимы интерпретируются следующим образом:
-
MODE_DISABLED- Изображение не будет разбито на тайлы.setTilingвыброситIllegalStateException. -
MODE_DEFAULT- Изображение будет разбито на тайлы с параметрами по умолчанию.setTilingвыброситIllegalStateException. -
MODE_EXPLICIT- Изображение будет разбито на тайлы согласно параметрам, заданным в методеsetTiling. Любые ранее заданные параметры разбиения отбрасываются. -
MODE_COPY_FROM_METADATA- Изображение будет соответствовать объекту метаданных, переданному в запись.setTilingвыброситIllegalStateException.
- Параметры:
-
mode- Режим, используемый для разбиения на тайлы. - Исключения:
-
UnsupportedOperationException- еслиcanWriteTilesвозвращаетfalse. -
IllegalArgumentException- еслиmodeне является одним из перечисленных режимов. - См. также:
-
setTiling(int, int, int, int),getTilingMode()
getTilingMode
public int getTilingMode()
Возвращает текущий режим разбиения на тайлы, если разбиение на тайлы поддерживается. В противном случае выбрасывается UnsupportedOperationException.
- Возвращает:
- текущий режим разбиения на тайлы.
- Исключения:
-
UnsupportedOperationException- еслиcanWriteTilesвозвращаетfalse. - См. также:
setTilingMode(int)
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. - См. также:
-
canWriteTiles,canOffsetTiles,getTileWidth(),getTileHeight(),getTileGridXOffset(),getTileGridYOffset()
unsetTiling
public void unsetTiling()
Удаляет любые предыдущие параметры сетки тайлов, заданные вызовами setTiling.
Реализация по умолчанию устанавливает значения переменных экземпляра tileWidth, tileHeight, tileGridXOffset, и tileGridYOffset в 0.
- Исключения:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. - См. также:
setTiling(int, int, int, int)
getTileWidth
public int getTileWidth()
Возвращает ширину каждого тайла в изображении, так как она будет записана в выходной поток. Если параметры разбиения на тайлы не заданы, выбрасывается IllegalStateException.
- Возвращает:
- ширина тайла для кодирования.
- Исключения:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
-
setTiling(int, int, int, int),getTileHeight()
getTileHeight
public int getTileHeight()
Возвращает высоту каждого тайла в изображении, так как она будет записана в выходной поток. Если параметры разбиения на тайлы не заданы, выбрасывается IllegalStateException.
- Возвращает:
- высота тайла для кодирования.
- Исключения:
-
UnsupportedOperationException- если плагин не поддерживает разбиение на тайлы. -
IllegalStateException- если режим разбиения на тайлы неMODE_EXPLICIT. -
IllegalStateException- если параметры разбиения на тайлы не заданы. - См. также:
-
setTiling(int, int, int, int),getTileWidth()
getTileGridXOffset
public int getTileGridXOffset()
Возвращает горизонтальное смещение сетки тайлов изображения, как она будет записана в выходной поток. Если параметры разбиения на тайлы не заданы, выбрасывается IllegalStateException.
- Возвращает:
- смещение сетки тайлов по оси X, используемое для кодирования.
- Исключение:
-
UnsupportedOperationException- если плагин не поддерживает тайлирование. -
IllegalStateException- если режим тайлирования неMODE_EXPLICIT. -
IllegalStateException- если параметры тайлирования не заданы. - См. также:
-
setTiling(int, int, int, int),getTileGridYOffset()
getTileGridYOffset
public int getTileGridYOffset()
Возвращает вертикальное смещение сетки тайлов изображения, как оно будет записано в выходной поток. Если параметры тайлирования не заданы, выбрасывается IllegalStateException.
- Возвращает:
- смещение сетки тайлов по оси Y, используемое для кодирования.
- Исключение:
-
UnsupportedOperationException- если плагин не поддерживает тайлирование. -
IllegalStateException- если режим тайлирования неMODE_EXPLICIT. -
IllegalStateException- если параметры тайлирования не заданы. - См. также:
-
setTiling(int, int, int, int),getTileGridXOffset()
canWriteProgressive
public boolean canWriteProgressive()
Возвращает true, если писатель может записывать изображения в виде серии проходов с последовательно возрастающим качеством.
- Возвращает:
-
trueесли писатель поддерживает прогрессивное кодирование. - См. также:
-
setProgressiveMode(int),getProgressiveMode()
setProgressiveMode
public void setProgressiveMode(int mode)
Указывает, что писатель должен записать изображение в прогрессивном режиме, так что поток будет содержать серию сканирований с возрастающим качеством. Если прогрессивное кодирование не поддерживается, будет выброшено UnsupportedOperationException.
Аргумент mode определяет, как выбираются параметры прогрессии, и должен быть либо 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не является одним из режимов, перечисленных выше. - См. также:
getProgressiveMode()
getProgressiveMode
public int getProgressiveMode()
Возвращает текущий режим записи потока в прогрессивном режиме.
- Возвращает:
- текущий режим прогрессивного кодирования.
- Исключение:
-
UnsupportedOperationException- если писатель не поддерживает прогрессивное кодирование. - См. также:
setProgressiveMode(int)
canWriteCompressed
public boolean canWriteCompressed()
Возвращает true если этот писатель поддерживает сжатие.
- Возвращает:
-
trueесли писатель поддерживает сжатие.
setCompressionMode
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не является одним из режимов, перечисленных выше. - См. также:
getCompressionMode()
getCompressionMode
public int getCompressionMode()
Возвращает текущий режим сжатия, если сжатие поддерживается.
- Возвращает:
- текущий режим сжатия.
- Исключение:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. - См. также:
setCompressionMode(int)
getCompressionTypes
public String[] getCompressionTypes()
Возвращает список доступных типов сжатия в виде массива или Strings, или null если тип сжатия не может быть выбран с помощью этих интерфейсов. Возвращаемый массив является копией.
Если писатель предлагает только один, обязательный тип сжатия, нет необходимости предоставлять какие-либо именованные типы сжатия. Именованные типы сжатия должны использоваться только в тех случаях, когда пользователь может сделать осмысленный выбор между различными схемами.
Реализация по умолчанию проверяет, поддерживается ли сжатие, и выводит UnsupportedOperationException в случае отсутствия поддержки. В противном случае возвращает клон compressionTypes переменной экземпляра, если она не null, или возвращает null.
- Возвращает:
- массив
Strings, содержащий (не локализованные) имена доступных типов сжатия, илиnull. - Исключение:
-
UnsupportedOperationException- если писатель не поддерживает сжатие.
setCompressionType
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. - См. также:
-
getCompressionTypes(),getCompressionType(),unsetCompression()
getCompressionType
public String getCompressionType()
Возвращает текущий установленный тип сжатия или null если он не установлен. Тип возвращается как String из тех, что возвращаются getCompressionTypes. Если тип сжатия не установлен, возвращается null.
Реализация по умолчанию проверяет, поддерживается ли сжатие и режим сжатия MODE_EXPLICIT. Если так, возвращает значение переменной экземпляра compressionType.
- Возвращает:
- текущий тип сжатия как
String, илиnullесли тип не установлен. - Исключение:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. - См. также:
setCompressionType(java.lang.String)
unsetCompression
public void unsetCompression()
Удаляет любые предыдущие типы и параметры качества сжатия.
Реализация по умолчанию устанавливает переменную экземпляра compressionType в null, и переменную экземпляра compressionQuality в 1.0F.
- Исключение:
-
UnsupportedOperationException- если плагин не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. - См. также:
-
setCompressionType(java.lang.String),setCompressionQuality(float)
getLocalizedCompressionTypeName
public String getLocalizedCompressionTypeName()
Возвращает локализованную версию имени текущего типа сжатия, используя Locale возвращаемое getLocale.
Реализация по умолчанию проверяет, поддерживается ли сжатие и режим сжатия MODE_EXPLICIT. Если да, если compressionType равно non-null, то возвращается значение getCompressionType для удобства.
- Возвращает:
Stringсодержащий локализованную версию имени текущего типа сжатия.- Исключение:
-
UnsupportedOperationException- если писатель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если тип сжатия не установлен.
isCompressionLossless
public boolean isCompressionLossless()
Возвращает true если текущий тип сжатия обеспечивает без потерь. Если плагин предоставляет только один обязательный тип сжатия, то этот метод можно вызывать, не вызывая setCompressionType предварительно.
Если есть несколько типов сжатия, но ни один не был установлен, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие, и режим сжатия равен MODE_EXPLICIT. Если так, то если getCompressionTypes() равен null или getCompressionType() не является null, true возвращается для удобства.
- Возвращает:
-
trueесли текущий тип сжатия без потерь. - Исключения:
-
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.
- Параметры:
-
quality- значениеfloatмежду0и1, указывающее желаемый уровень качества. - Исключения:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. -
IllegalArgumentException- еслиqualityне находится между0и1, включительно. - См. также:
getCompressionQuality()
getCompressionQuality
public float getCompressionQuality()
Возвращает текущее значение качества сжатия.
Если есть несколько типов сжатия, но ни один не был установлен, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и что режим сжатия MODE_EXPLICIT. Если это так, то если getCompressionTypes() равно null или getCompressionType() не равно null, она возвращает значение переменной экземпляра compressionQuality.
- Возвращает:
- текущее значение качества сжатия.
- Исключения:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - См. также:
setCompressionQuality(float)
getBitRate
public float getBitRate(float quality)
Возвращает значение float, указывающее оценку количества битов выходных данных для каждого бита входных данных изображения при заданном уровне качества. Значение обычно находится в диапазоне от 0 до 1, где меньшие значения указывают на большее сжатие. Специальное значение -1.0F используется для обозначения того, что оценка недоступна.
Если есть несколько типов сжатия, но ни один не был установлен, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и режим сжатия MODE_EXPLICIT. Если это так, если getCompressionTypes() равно null или getCompressionType() не равно null, и quality находится в пределах, она возвращает -1.0.
- Параметры:
-
quality- значение качества, битрейт которого необходимо запросить. - Возвращает:
- оценка сжатого битрейта или
-1.0Fесли оценка недоступна. - Исключения:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. -
IllegalArgumentException- еслиqualityне находится между0и1, включительно.
getCompressionQualityDescriptions
public String[] getCompressionQualityDescriptions()
Возвращает массив 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, она возвращает null.
- Возвращает:
- массив
Stringсодержащий локализованные описания уровней качества сжатия. - Исключения:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - См. также:
getCompressionQualityValues()
getCompressionQualityValues
public float[] getCompressionQualityValues()
Возвращает массив float который может использоваться вместе с getCompressionQualityDescriptions в качестве части пользовательского интерфейса для установки или отображения уровня качества сжатия. См. getCompressionQualityDescriptions для получения дополнительной информации.
Если описания недоступны, возвращается null. Если из getCompressionQualityDescriptions возвращается null, этот метод также должен вернуть null.
Если есть несколько типов сжатия, но ни один не был установлен, выбрасывается IllegalStateException.
Реализация по умолчанию проверяет, поддерживается ли сжатие и что режим сжатия MODE_EXPLICIT. Если это так, если getCompressionTypes() равно null или getCompressionType() не равно null, она возвращает null.
- Возвращает:
- массив
floatуказывающий границы между уровнями качества сжатия, как описано вStringизgetCompressionQualityDescriptions. - Исключения:
-
UnsupportedOperationException- если записыватель не поддерживает сжатие. -
IllegalStateException- если режим сжатия неMODE_EXPLICIT. -
IllegalStateException- если набор допустимых типов сжатия неnullи текущий тип сжатияnull. - См. также:
getCompressionQualityDescriptions()
© 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.