Поделиться через


Использование параметров кодирования (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]

В этом разделе показано, как устанавливать параметры кодирования для BitmapEncoder. Параметры кодирования позволяют вам точно настраивать порядок и параметры работы кодировщика. Например, вы можете задать для кодировщика JPEG параметр ImageQuality, управляющий соотношением качества изображения и размера файла. Обычно не требуется использовать параметры кодирования, так как кодировщик автоматически выбирает подходящие значения по умолчанию.

Параметры кодирования предоставляются только методами CreateAsync и GoToNextFrameAsync класса 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.
    });

Теперь у вас есть обычный кодировщик.

Связанные разделы

Кодирование нового изображения