Share via


Como usar opções de codificação (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente ]

Este tópico mostra como definir opções de codificação em um BitmapEncoder. As opções de codificação permitem fazer um ajuste fino do comportamento e dos parâmetros de um codificador. Por exemplo, você pode definir a opção ImageQuality no codificador de JPEG para controlar o equilíbrio entre qualidade de imagem e tamanho do arquivo. Normalmente, não é necessário usar as opções de codificação porque o codificador escolherá automaticamente os valores padrão apropriados.

As opções de codificação são expostas somente pelos métodos CreateAsync e GoToNextFrameAsync de BitmapEncoder. Isso ocorre porque é necessário especificar a opção de codificação ao inicializar o codificador ou estrutura.

O que você precisa saber

Tecnologias

Pré-requisitos

Referência de opções de codificação

Você pode usar as opções de codificação aqui com BitmapEncoder. Uma opção de codificação é definida pelo nome, que é uma cadeia de caracteres, e um valor em um tipo de dados específico (Windows.Foundation.PropertyType).

Nome PropertyType Observações de uso Formatos válidos
ImageQuality único Valores válidos de 0 a 1.0. Valores maiores indicam maior qualidade. JPEG, JPEG-XR
CompressionQuality único Valores válidos de 0 a 1.0. Valores maiores indicam um esquema de compactação mais eficiente e mais lento. TIFF
Lossless booliano Se for definido como true, a opção ImageQuality será ignorada. JPEG-XR
InterlaceOption booliano Se a imagem será entrelaçada ou não. PNG
FilterOption uint8 Use a enumeração PngFilterMode. PNG
TiffCompressionMethod uint8 Use a enumeração TiffCompressionMode. TIFF
Luminância uint32Array Uma matriz de 64 elementos que contém constantes de quantização de luminância. JPEG
Crominância uint32Array Uma matriz de 64 elementos que contém constantes de quantização de crominância. JPEG
JpegYCrCbSubsampling uint8 Use a enumeração JpegSubsamplingMode. JPEG
SuppressApp0 booliano Se a criação de um bloco de metadados App0 será suprimida ou não. JPEG
EnableV5Header32bppBGRA booliano Se for para codificar em uma versão 5 BMP com suporte para alfa. BMP

 

Instruções

Etapa 1: Obter um fluxo de saída

Escreva o início de uma função que recebe um IRandomAccessStream aberto do arquivo para o qual você está codificando. Você precisa usar um fluxo que foi aberto usando privilégios ReadWrite.

function (stream) {

Observação  Esse exemplo pressupõe que você esteja codificando uma imagem JPEG. As opções de codificação são específicas ao formato da imagem.

 

Para saber como obter um fluxo de saída, veja Como codificar uma nova imagem

Etapa 2: Criar uma coleção de opções de codificação

Use um objeto BitmapPropertySet para armazenar uma ou mais opções de codificação. Cada opção de codificação consiste em um par de chave-valor. A chave é uma cadeia de caracteres definida como sendo o nome da opção de codificação, como ImageQuality. O valor é um objeto BitmapTypedValue que permite associar o valor da opção da codificação real com um tipo de dados explícito (Windows.Foundation.PropertyType).

Esse exemplo mostra como definir o codificador de JPEG para usar a qualidade máxima disponível. Para definir a qualidade, crie uma opção de codificação com a chave ImageQuality e defina o valor como sendo um único número de precisão, 1.0 (o maior 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);

Etapa 3: Inicializar o codificador com as opções de codificação

Use o método CreateAsync com as opções de codificação como sendo o último parâmetro.

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

Agora você tem um codificador que pode usar como normal.

Tópicos relacionados

Como codificar uma nova imagem