Como gravar metadados de imagem (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 ]
Mostra como usar um objeto BitmapEncoder para gravar metadados de imagem. Você pode gravar os metadados usando as propriedades do Windows ou a linguagem de consulta de metadados WIC (Windows Imaging Component).
Para saber mais sobre acesso a metadados usando BitmapDecoder e BitmapEncoder, veja Como ler metadados de imagens.
Observação Você pode usar as APIs Windows.Storage.FileProperties para obter e definir propriedades básicas em um Windows.StorageFile sem abrir um fluxo. Veja Como obter propriedades de imagem para saber mais.
O que você precisa saber
Tecnologias
- Compilando seu primeiro aplicativo do Tempo de Execução do Windows em JavaScript
- Windows.Graphics.Imaging
- Linguagem de consulta de metadados WIC
- Linguagem de consulta de metadados WIC
- Consultas de metadados de formato de imagem nativo WIC
- Propriedades do Windows com suporte
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.
Instruções
Etapa 1: Obter um objeto de codificador
Grave o início de uma função que recebe um objeto BitmapEncoder.
function (encoder) {
O codificador permite acessar os metadados da imagem. Se você ainda não tem um objeto de codificador, veja Como codificar uma nova imagem.
Etapa 2: Criar uma coleção de metadados a ser definida
Use um BitmapPropertySet para armazenar itens de metadados que você quer definir no codificador. Cada item de metadados consiste em um par de chave-valor.
A chave é uma cadeia de caracteres que identifica o item de metadados a ser definido. O BitmapEncoder aceita algumas propriedades do Windows, além de consultas construídas usando a linguagem de consulta de metadados WIC. Para obter uma lista das propriedades do Windows com suporte, veja Propriedades do Windows com suporte. Para obter um resumo das consultas de metadados WIC com suporte, veja Consultas de metadados de formato de imagem nativo WIC.
O valor é um BitmapTypedValue que permite associar o valor de metadados real a um tipo de dados explícito (Windows.Foundation.PropertyType).
Defina os metadados System.Photo.Orientation, que especificam a orientação EXIF, com um valor de 1, que especifica uma orientação "normal", e atribua um tipo de dados uint16.
var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
var orientationValue = new Windows.Graphics.Imaging.BitmapTypedValue(
1, // Defined as EXIF orientation = "normal"
Windows.Foundation.PropertyType.uint16
);
propertySet.insert("System.Photo.Orientation", orientationValue);
Etapa 3: Defina os dados no codificador
Depois de terminar a construção de todos os itens de metadados, defina-os no codificador e continue com a operação de codificação.
encoder.bitmapProperties.setPropertiesAsync(propertySet).done(function () {
// Continue the encoding operation.
}, function (error) {
switch (error.number) {
case -2003292351: // WINCODEC_ERR_PROPERTYNOTSUPPORTED
// The file format does not support this property.
break;
default:
throw error;
}
});
}
Observação Cada formato de imagem dá suporte a um conjunto diferente de itens de metadados. Se você tentar definir um item de metadados ou propriedade que não tem suporte no formato de imagem, será gerado um erro. Por exemplo, só imagens JPEG, TIFF e JPEG-XR são compatíveis com a propriedade System.Photo.Orientation.
Comentários
A definição de várias propriedades funciona da mesma forma que definir uma única propriedade, mas você especifica vários pares nome-valor em uma lista. O código aqui define a Orientation e o CameraModel ao mesmo tempo.
encoder.savePropertiesAsync(["System.Photo.Orientation": 1],
"System.Photo.CameraModel": "Camera Model 1"]);
Tópicos relacionados
Linguagem de consulta de metadados WIC