Использование параметров кодирования (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
В этом разделе показано, как устанавливать параметры кодирования для BitmapEncoder. Параметры кодирования позволяют вам точно настраивать порядок и параметры работы кодировщика. Например, вы можете задать для кодировщика JPEG параметр ImageQuality, управляющий соотношением качества изображения и размера файла. Обычно не требуется использовать параметры кодирования, так как кодировщик автоматически выбирает подходящие значения по умолчанию.
Параметры кодирования предоставляются только методами CreateAsync и GoToNextFrameAsync класса BitmapEncoder, так как вы должны указать параметр кодирования при инициализации кодировщика или кадра.
Что необходимо знать
Технологии
Необходимые условия
- Вы должны уметь создавать простое приложение среды выполнения Windows на JavaScript. Дополнительные сведения см. в разделе о создании первого приложения среды выполнения Windows на JavaScript.
- Вы должны знать, как кодировать изображение с помощью BitmapEncoder. Дополнительные сведения см. в разделе Кодирование нового изображения.
Ссылка на параметры кодирования
Указанные здесь параметры кодирования можно использовать вместе с BitmapEncoder. Параметр кодирования определяется именем в виде строки и значением в виде определенного типа данных (Windows.Foundation.PropertyType).
Имя | PropertyType | Примечания по использованию | Допустимые форматы |
---|---|---|---|
ImageQuality | single | Допустимые значения от 0 до 1,0. Более высокие значения обозначают более высокое качество. | JPEG, JPEG-XR |
CompressionQuality | single | Допустимые значения от 0 до 1,0. Более высокие значения обозначают более эффективную и медленную схему сжатия. | TIFF |
Lossless | boolean | Если для параметра установлено значение "Истина", параметр ImageQuality игнорируется. | JPEG-XR |
InterlaceOption | boolean | Определяет, нужно ли чересстрочное отображение изображения. | PNG |
FilterOption | uint8 | Использование перечисления PngFilterMode. | PNG |
TiffCompressionMethod | uint8 | Использование перечисления TiffCompressionMode. | TIFF |
Luminance | uint32Array | Массив из 64 элементов, содержащий постоянные квантования яркости. | JPEG |
Chrominance | uint32Array | Массив из 64 элементов, содержащий постоянные квантования цветопередачи. | JPEG |
JpegYCrCbSubsampling | uint8 | Использование перечисления JpegSubsamplingMode. | JPEG |
SuppressApp0 | boolean | Определяет, нужно ли подавлять создание блока метаданных App0. | JPEG |
EnableV5Header32bppBGRA | boolean | Определяет, нужно ли кодировать BMP 5-ой версии с поддержкой альфа. | BMP |
Инструкции
Этап 1: Получение выходного потока
Напишите начало функции, получающей поток IRandomAccessStream, открытый из файла, в который выполняется кодирование. Вам нужно использовать поток, открытый с использованием привилегий ReadWrite.
function (stream) {
Примечание В этом примере предполагается, что вы кодируете рисунок JPEG. Для каждого формата изображения определены свои параметры кодирования.
Чтобы узнать, как получить выходной поток, см. раздел Кодирование нового изображения
Этап 2: Создание коллекции параметров кодирования
Для хранения одного или нескольких параметров кодирования используйте объект BitmapPropertySet. Каждый параметр кодирования представляет собой пару "ключ — значение". Ключ — это строка, в которую записано имя параметра кодирования, например ImageQuality. Значение является объектом BitmapTypedValue, который позволяет вам сопоставить действительное значение параметра кодирования с явным типом данных (Windows.Foundation.PropertyType).
В данном примере показана настройка кодировщика JPEG для использования максимального доступного качества. Чтобы установить качество, создайте параметр кодирования с ключом ImageQuality и установите числовое значение одиночной точности — 1,0 (наивысшее допустимое значение).
var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
var qualityValue = new Windows.Graphics.Imaging.BitmapTypedValue(
1.0, // Maximum quality
Windows.Foundation.PropertyType.single
);
propertySet.insert("ImageQuality", qualityValue);
Этап 3: Инициализация кодировщика с параметрами кодировки
Используйте метод CreateAsync с параметрами кодировки в качестве последнего параметра.
Windows.Graphics.Imaging.BitmapEncoder.createAsync(
Windows.Graphics.Imaging.BitmapEncoder.jpegEncoderId,
stream,
propertySet
).then(function (encoder) {
// Encoder is initialized with encoding options.
});
Теперь у вас есть обычный кодировщик.