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
- Crear tu primera aplicación de Windows en tiempo de ejecución con JavaScript
- Windows.Graphics.Imaging
Requisitos previos
- Debes saber crear una aplicación de Windows en tiempo de ejecución básica con JavaScript. Para obtener más información, consulta el tema sobre cómo crear tu primera aplicación de Windows en tiempo de ejecución con JavaScript.
- Debes saber cómo codificar una imagen con BitmapEncoder. Para obtener más información, consulta Cómo codificar una imagen nueva.
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.