Compartir a través de


Cómo usar opciones de codificación (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows Runtime. Si estás desarrollando para Windows 10, consulta la documentación más reciente ]

Este tema muestra cómo establecer opciones de codificación en un BitmapEncoder. Las opciones de codificación te permiten ajustar con precisión el comportamiento y los parámetros de un codificador. Por ejemplo, puedes establecer la opción ImageQuality en el codificador JPEG para controlar la compensación entre la calidad de imagen y el tamaño de archivo. Por lo general, no necesitas usar opciones de codificación porque el codificador seleccionará automáticamente los valores predeterminados adecuados.

Las opciones de codificación solo se exponen mediante los métodos CreateAsync y GoToNextFrameAsync de BitmapEncoder. Esto se debe a que tienes que especificar la opción de codificación cuando inicializas el codificador o marco.

Lo que debes saber

Tecnologías

Requisitos previos

Referencia de opciones de codificación

Puedes usar estas opciones de codificación con BitmapEncoder. Una opción de codificación se define por su nombre, que es una cadena, y un valor en un determinado tipo de datos (Windows.Foundation.PropertyType).

Nombre PropertyType Notas de uso Formatos válidos
ImageQuality single Valores válidos de 0 a 1.0. Los valores más altos indican una mayor calidad. JPEG, JPEG-XR
CompressionQuality single Valores válidos de 0 a 1.0. Los valores más altos indican un esquema de compresión más eficaz y más lento. TIFF
Lossless boolean Si se establece en true, se omite la opción ImageQuality. JPEG-XR
InterlaceOption boolean Define si se entrelaza la imagen. PNG
FilterOption uint8 Usa la enumeración PngFilterMode. PNG
TiffCompressionMethod uint8 Usa la enumeración TiffCompressionMode. TIFF
Luminance uint32Array Una matriz de 64 elementos que contiene constantes de cuantificación de luminancia. JPEG
Chrominance uint32Array Una matriz de 64 elementos que contiene constantes de cuantificación de crominancia. JPEG
JpegYCrCbSubsampling uint8 Usa la enumeración JpegSubsamplingMode. JPEG
SuppressApp0 boolean Define si se suprime la creación de un bloque de metadatos App0. JPEG
EnableV5Header32bppBGRA boolean Define si se debe codificar a una versión 5 BMP que admite alpha. BMP

 

Instrucciones

Paso 1: Obtener una secuencia de salida

Escribe el comienzo de una función que recibe una IRandomAccessStream abierta del archivo en el que estás codificando. Debes estar usando una secuencia que se abrió con privilegios ReadWrite.

function (stream) {

Nota  En este ejemplo se supone que estás codificando en una imagen JPEG. Las opciones de codificación son específicas del formato de imagen.

 

Para obtener más información sobre cómo obtener una secuencia de salida, consulta Cómo codificar una imagen nueva

Paso 2: Crear una colección de opciones de codificación

Utilizas un objeto BitmapPropertySet para almacenar una o más opciones de codificación. Cada opción de codificación es un par clave-valor. La clave es una cadena establecida en el nombre de la opción de codificación, como ImageQuality. El valor es un objeto BitmapTypedValue que te permite asociar el valor de opción de codificación real con un tipo de datos explícito (Windows.Foundation.PropertyType).

Este ejemplo te muestra cómo establecer el codificador JPEG para usar la máxima calidad disponible. Para establecer la calidad, crea una opción de codificación con la clave ImageQuality y establece el valor en un solo número de precisión, 1.0 (el máximo valor válido).

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

Paso 3: Inicializar el codificador con las opciones de codificación

Usa el método CreateAsync con las opciones de codificación como el último parámetro.

Windows.Graphics.Imaging.BitmapEncoder.createAsync(
        Windows.Graphics.Imaging.BitmapEncoder.jpegEncoderId,
        stream,
        propertySet
    ).then(function (encoder) {
        // Encoder is initialized with encoding options.
    });

Ahora ya tienes un codificador que puedes usar del modo habitual.

Temas relacionados

Cómo codificar una imagen nueva