Professional Documents
Culture Documents
Docs / Windows / UWP / Develop / Audio, video, and camera / Develop apps / + Leer en inglés
Detect and respond to audio
Audio, video,
state and camera / Create, edit, and save bitmap images
changes Iniciar sesión
Create, edit, and save bitmap
T
7 Esteimages
artículo lo ha traducido una máquina. Puede mostrar el texto en inglés en una ventana emergente
Deshabilitar
moviendo el cursor
Process del mouse
bitmaps with sobre el texto.
OpenCV
BitmapEncoder options
Crear, editar y guardar
reference
Image metadata
imágenes de mapa de bits
21/03/2018 Tiempo de lectura: 14 minutos
Transcode media files
En este artículo
Process media files in the
background Crear un objeto SoftwareBitmap desde un archivo de imagen con BitmapDecoder
Import media from a device Crear un objeto SoftwareBitmap desde un objeto WriteableBitmap
Crear o editar un objeto SoftwareBitmap mediante programación
C i d d Comentarios
Crear un objeto SoftwareBitmap desde una superficie de Direct3D
Convertir un objeto SoftwareBitmap a un formato de píxel diferente
Transcodificar un archivo de imagen
Temas relacionados
La clase SoftwareBitmap es una API versátil que se puede crear desde varios
orígenes, entre los que se incluyen archivos de imagen, objetos WriteableBitmap,
superficies de Direct3D y código. SoftwareBitmap permite convertir fácilmente
entre los modos alfa y formatos de píxel diferentes, y también permite el acceso
de bajo nivel a datos de píxel. Además, SoftwareBitmap es una interfaz común
que utilizan varias características de Windows, entre las que se incluyen:
El código de ejemplo de este artículo usa las API de los siguientes espacios de
nombres.
C# = Copiar
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.Graphics.Imaging;
using Windows.UI.Xaml.Media.Imaging;
C# = Copiar
if (inputFile == null)
{
// The user cancelled the picking operation
return;
}
Llama al método OpenAsync del objeto StorageFile para obtener una secuencia
de acceso aleatorio que contenga los datos de la imagen. Llama al método
estático BitmapDecoder.CreateAsync para obtener una instancia de la clase
BitmapDecoder para el flujo especificado. Llama a GetSoftwareBitmapAsync para
obtener un objeto SoftwareBitmap que contenga la imagen.
C# = Copiar
SoftwareBitmap softwareBitmap;
C# = Copiar
if (outputFile == null)
{
// The user cancelled the picking operation
return;
}
Llama al método OpenAsync del objeto StorageFile para obtener una secuencia
de acceso aleatorio en el que se escribirá la imagen. Llama al método estático
BitmapEncoder.CreateAsync para obtener una instancia de la clase
BitmapEncoder para el flujo especificado. El primer parámetro para CreateAsync
es un GUID que representa el códec que se debe usar para codificar la imagen. La
clase BitmapEncoder expone una propiedad que contiene el identificador de cada
códec compatible con el codificador, como por ejemplo JpegEncoderId.
Llama a FlushAsync para hacer que el codificador escriba los datos de la imagen
en el archivo especificado.
C# = Copiar
try
{
await encoder.FlushAsync();
}
catch (Exception err)
{
const int WINCODEC_ERR_UNSUPPORTEDOPERATION = unchecked((int)0
switch (err.HResult)
{
case WINCODEC_ERR_UNSUPPORTEDOPERATION:
// If the encoder does not support writing a thumbnail
// but disable thumbnail generation.
encoder.IsThumbnailGenerated = false;
break;
default:
throw;
}
}
if (encoder.IsThumbnailGenerated == false)
{
await encoder.FlushAsync();
}
}
}
C# = Copiar
propertySet.Add("ImageQuality", qualityValue);
await Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(
Windows.Graphics.Imaging.BitmapEncoder.JpegEncoderId,
stream,
propertySet
);
XML = Copiar
<Image x:Name="imageControl"/>
C# = Copiar
if (softwareBitmap.BitmapPixelFormat != BitmapPixelFormat.Bgra8 ||
softwareBitmap.BitmapAlphaMode == BitmapAlphaMode.Straight)
{
softwareBitmap = SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFor
}
C# = Copiar
C# = Copiar
using System.Runtime.InteropServices;
C# = Copiar
[ComImport]
[Guid("5B0D3235-4DBA-4D44-865E-8F1D0E4FD04D")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
unsafe interface IMemoryBufferByteAccess
{
void GetBuffer(out byte* buffer, out uint capacity);
}
C# = Copiar
Como este método tiene acceso el búfer sin procesar subyacente a los tipos de
Windows Runtime, se debe declarar con la palabra clave unsafe. También debes
configurar el proyecto en Microsoft Visual Studio para permitir la compilación del
código no seguro; para ello, abre la página Propiedades del proyecto, haz clic en
la página de propiedades de Compilación y selecciona la casilla Permitir código
no seguro.
C# = Copiar
using Windows.Graphics.DirectX.Direct3D11;
C# = Copiar
C# = Copiar
C# = Copiar
encoder.BitmapTransform.ScaledWidth = 320;
encoder.BitmapTransform.ScaledHeight = 240;
await encoder.FlushAsync();
memStream.Seek(0);
fileStream.Seek(0);
fileStream.Size = 0;
await RandomAccessStream.CopyAsync(memStream, fileStream);
memStream.Dispose();
}
}
Temas relacionados
Referencia de opciones de BitmapEncoder
Metadatos de imagen
Español (España)
Documentación de versiones anteriores • Blog • Contribuir • Privacidad & cookies • Términos de uso • Comentarios del sitio •
Marcas comerciales