BitmapEncoder Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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
- Geração de imagens
- Exemplo de resolução de câmera (Windows 10)
- Exemplo de aplicativo de câmera básico (Windows 10)
- Exemplo de estabilização de vídeo (Windows 10)
- Amostra de detecção facial da câmera (Windows 10)
- Exemplo de controles manuais de câmera (Windows 10)
- Exemplo de intervalo dinâmico alto (Windows 10)
- Exemplo de Captura Avançada da Câmera