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
- Compilando seu primeiro aplicativo do Tempo de Execução do Windows em JavaScript
- Windows.Graphics.Imaging
Pré-requisitos
- Você precisa saber criar um aplicativo básico do Tempo de Execução do Windows em JavaScript. Para obter mais informações, veja Compilando seu primeiro aplicativo do Tempo de Execução do Windows em JavaScript.
- Você deve saber como codificar uma imagem usando BitmapEncoder. Para saber mais, veja Como codificar uma nova imagem.
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.