BitmapEncoder Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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
- Creación de imágenes
- Muestra de resolución de cámara (Windows 10)
- Ejemplo básico de aplicación de cámara (Windows 10)
- Ejemplo de estabilización de vídeo (Windows 10)
- Ejemplo de detección de caras de cámara (Windows 10)
- Muestra manual de controles de cámara (Windows 10)
- Ejemplo de rango dinámico alto (Windows 10)
- Ejemplo de captura avanzada de cámara