Compartir a través de


BitmapEncoder Clase

Definición

Contiene métodos para crear, editar y guardar imágenes.

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
Herencia
Object Platform::Object IInspectable BitmapEncoder
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

Este es un ejemplo parcial de la creación de un objeto codificador. En este ejemplo se supone que ha seleccionado un archivo con Windows.Storage.Pickers.FileSavePicker. Para obtener instrucciones completas sobre cómo seleccionar un archivo, crear un codificador y codificar una imagen, consulte Creación de imágenes.

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();
        }


    }
}

Comentarios

Formatos de imagen

BitmapEncoder puede codificar los siguientes formatos.

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

Para obtener una lista de formatos de descodificación, consulte el tema BitmapDecoder .

BitmapEncoder se comporta de forma diferente a BitmapDecoder en que no proporciona acceso aleatorio a los fotogramas de una imagen. En su lugar, debe realizar acciones en el codificador en un orden específico.

Al crear un bitmapEncoder, proporciona acceso a los datos del contenedor y al primer fotograma. Cuando haya terminado de establecer los datos en el primer marco y contenedor, si no desea codificar ningún fotograma adicional, llame a FlushAsync para completar la operación de codificación.

Si desea codificar un marco adicional, llame a GoToNextFrameAsync. Esto confirma los datos del contenedor y el primer fotograma para que ya no pueda editarlos. En este momento, las acciones que realice en el codificador afectarán al segundo fotograma. Una vez que haya terminado con cada fotograma, puede llamar a GoToNextFrameAsync para confirmar y anexar un nuevo fotograma, o llamar a FlushAsync para finalizar. Los codificadores de mapa de bits pueden exponer varias opciones de codificación que afectan a la calidad, el tamaño y otras propiedades del archivo de salida codificado. Para obtener más información, consulta Imágenes.

Historial de versiones

Versión de Windows Versión del SDK Valor agregado
1809 17763 HeifEncoderId

Propiedades

BitmapContainerProperties

Metadatos del contenedor.

BitmapProperties

Metadatos del marco seleccionado.

BitmapTransform

Objeto BitmapTransform que se usa para especificar cómo se va a transformar el mapa de bits de marco.

BmpEncoderId

Identificador único del codificador BMP integrado.

EncoderInformation

Información sobre el codificador de mapa de bits.

GeneratedThumbnailHeight

Alto, en píxeles, de cualquier miniatura generada.

GeneratedThumbnailWidth

Ancho, en píxeles, de cualquier miniatura generada.

GifEncoderId

Identificador único del codificador GIF integrado.

HeifEncoderId

Identificador único del codificador HEIF integrado.

IsThumbnailGenerated

Indica si se genera o no una nueva miniatura automáticamente.

JpegEncoderId

Identificador único del codificador JPEG integrado.

JpegXREncoderId

Identificador único del codificador JPEG-XR integrado.

PngEncoderId

Identificador único del codificador PNG integrado.

TiffEncoderId

Identificador único del codificador TIFF integrado.

Métodos

CreateAsync(Guid, IRandomAccessStream)

Crea de forma asincrónica un nuevo bitmapEncoder.

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

Crea de forma asincrónica un nuevo BitmapEncoder para el códec especificado con las opciones de codificación especificadas e inicializa en una secuencia.

CreateForInPlacePropertyEncodingAsync(BitmapDecoder)

Crea de forma asincrónica un nuevo BitmapEncoder para la edición de metadatos y propiedades en contexto. El nuevo codificador solo puede editar las propiedades de mapa de bits en contexto y producirá un error en cualquier otro uso.

CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder)

Crea de forma asincrónica un bitmapEncoder e inicializa mediante datos de un bitmapDecoder existente.

FlushAsync()

Confirma y vacía de forma asincrónica todos los datos de la imagen.

GetEncoderInformationEnumerator()

Lista de los codificadores de mapa de bits instalados en el sistema e información sobre ellos.

GoToNextFrameAsync()

Confirma asincrónicamente los datos de fotogramas actuales y anexa un nuevo marco vacío que se va a editar.

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

Confirma asincrónicamente los datos de fotogramas actuales y anexa un nuevo marco vacío, con las opciones de codificación especificadas, que se van a editar.

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

Establece datos de píxeles en el marco.

SetSoftwareBitmap(SoftwareBitmap)

Establece los datos de imagen del fotograma actual mediante el objeto SoftwareBitmap especificado.

Se aplica a

Consulte también