Partilhar via


BitmapEncoder Classe

Definição

Contém métodos para criar, editar e salvar imagens.

public ref class BitmapEncoder sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class BitmapEncoder final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class BitmapEncoder
Public NotInheritable Class BitmapEncoder
Herança
Object Platform::Object IInspectable BitmapEncoder
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

Aqui está um exemplo parcial de criação de um objeto de codificador. Este exemplo pressupõe que você selecionou um arquivo com Windows.Storage.Pickers.FileSavePicker. Para obter instruções completas sobre como selecionar um arquivo, criar um codificador e codificar uma imagem, consulte Geração de imagens

private async void SaveSoftwareBitmapToFile(SoftwareBitmap softwareBitmap, StorageFile outputFile)
{
    using (IRandomAccessStream stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
    {
        // Create an encoder with the desired format
        BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);

        // Set the software bitmap
        encoder.SetSoftwareBitmap(softwareBitmap);

        // Set additional encoding parameters, if needed
        encoder.BitmapTransform.ScaledWidth = 320;
        encoder.BitmapTransform.ScaledHeight = 240;
        encoder.BitmapTransform.Rotation = Windows.Graphics.Imaging.BitmapRotation.Clockwise90Degrees;
        encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant;
        encoder.IsThumbnailGenerated = true;

        try
        {
            await encoder.FlushAsync();
        }
        catch (Exception err)
        {
            const int WINCODEC_ERR_UNSUPPORTEDOPERATION = unchecked((int)0x88982F81);
            switch (err.HResult)
            {
                case WINCODEC_ERR_UNSUPPORTEDOPERATION: 
                    // If the encoder does not support writing a thumbnail, then try again
                    // but disable thumbnail generation.
                    encoder.IsThumbnailGenerated = false;
                    break;
                default:
                    throw;
            }
        }

        if (encoder.IsThumbnailGenerated == false)
        {
            await encoder.FlushAsync();
        }


    }
}

Comentários

Formatos de imagem

O BitmapEncoder pode codificar os seguintes formatos.

  • JPEG
  • PNG
  • GIF
  • TIFF
  • BMP
  • JPEG-XR

Para obter uma lista de formatos de decodificação, consulte o tópico BitmapDecoder .

O BitmapEncoder se comporta de forma diferente do BitmapDecoder , pois não fornece acesso aleatório aos quadros em uma imagem. Em vez disso, você precisa executar ações no codificador em uma ordem específica.

Quando você cria um BitmapEncoder, ele fornece acesso aos dados no contêiner e ao primeiro quadro. Quando terminar de definir dados no primeiro quadro e contêiner, se você não quiser codificar quadros adicionais, chame FlushAsync para concluir a operação de codificação.

Se você quiser codificar um quadro adicional, chame GoToNextFrameAsync. Isso confirma os dados no contêiner e o primeiro quadro para que você não possa mais editá-los. Neste ponto, todas as ações executadas no codificador afetarão o segundo quadro. Depois de terminar cada quadro, você pode chamar GoToNextFrameAsync para confirmar e acrescentar um novo quadro ou chamar FlushAsync para concluir. Os codificadores de bitmap podem expor várias opções de codificação que afetam a qualidade, o tamanho e outras propriedades do arquivo de saída codificado. Para obter mais informações, consulte Geração de imagens.

Histórico de versão

Versão do Windows Versão do SDK Valor adicionado
1809 17763 HeifEncoderId

Propriedades

BitmapContainerProperties

Os metadados do contêiner.

BitmapProperties

Os metadados do quadro selecionado.

BitmapTransform

Um objeto BitmapTransform usado para especificar como o bitmap de quadro deve ser transformado.

BmpEncoderId

O identificador exclusivo do codificador BMP interno.

EncoderInformation

Informações sobre o codificador de bitmap.

GeneratedThumbnailHeight

A altura, em pixels, de qualquer miniatura gerada.

GeneratedThumbnailWidth

A largura, em pixels, de qualquer miniatura gerada.

GifEncoderId

O identificador exclusivo do codificador GIF interno.

HeifEncoderId

O identificador exclusivo do codificador HEIF interno.

IsThumbnailGenerated

Indica se uma nova miniatura é gerada automaticamente ou não.

JpegEncoderId

O identificador exclusivo do codificador JPEG interno.

JpegXREncoderId

O identificador exclusivo do codificador JPEG-XR interno.

PngEncoderId

O identificador exclusivo do codificador PNG interno.

TiffEncoderId

O identificador exclusivo do codificador TIFF interno.

Métodos

CreateAsync(Guid, IRandomAccessStream)

Cria de forma assíncrona um novo BitmapEncoder.

CreateAsync(Guid, IRandomAccessStream, IIterable<KeyValuePair<String,BitmapTypedValue>>)

Cria de forma assíncrona um novo BitmapEncoder para o codec especificado com as opções de codificação especificadas e inicializa-o em um fluxo.

CreateForInPlacePropertyEncodingAsync(BitmapDecoder)

Cria de forma assíncrona um novo BitmapEncoder para edição de propriedades e metadados in-loco. O novo codificador só pode editar propriedades de bitmap in-loco e falhará para qualquer outro uso.

CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder)

Cria de forma assíncrona um novo BitmapEncoder e o inicializa usando dados de um BitmapDecoder existente.

FlushAsync()

Confirma e libera de forma assíncrona todos os dados da imagem.

GetEncoderInformationEnumerator()

Uma lista dos codificadores de bitmap instalados no sistema e informações sobre eles.

GoToNextFrameAsync()

Confirma de forma assíncrona os dados do quadro atual e acrescenta um novo quadro vazio a ser editado.

GoToNextFrameAsync(IIterable<KeyValuePair<String,BitmapTypedValue>>)

Confirma de forma assíncrona os dados do quadro atual e acrescenta um novo quadro vazio, com as opções de codificação especificadas, a serem editadas.

SetPixelData(BitmapPixelFormat, BitmapAlphaMode, UInt32, UInt32, Double, Double, Byte[])

Define dados de pixel no quadro.

SetSoftwareBitmap(SoftwareBitmap)

Define os dados de imagem do quadro atual usando o SoftwareBitmap especificado.

Aplica-se a

Confira também