Share via


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

Pré-requisitos

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

Como decodificar uma imagem

Propriedades System.Photo

Como ler metadados de imagem

Linguagem de consulta de metadados WIC

Consultas de metadados de formato de imagem nativo WIC

Propriedades do Windows com suporte