imagen decodificar convert c# windows-runtime windows-phone-8.1 bytearray bitmapimage

c# - decodificar - Convertir la imagen de BitmapImage en byte[] en Windows Phone 8.1 Runtime



decodificar imagen base64 javascript (2)

¿Intentó esto?

private byte[] ConvertToBytes(BitmapImage bitmapImage) { byte[] data = null; using (MemoryStream stream = new MemoryStream()) { WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage); wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100); stream.Seek(0, SeekOrigin.Begin); data = stream.GetBuffer(); } return data; }

Hay algunas muestras para hacer esto, pero son para Windows Phone 8.0 o 8.1 Silverlight.

¿Pero cómo puedes hacer esto para Windows Phone 8.1 Runtime?


No puede extraer los píxeles de Windows.UI.Xaml.Media.Imaging. BitmapImage .

La solución más general es usar un WriteableBitmap en lugar de un BitmapImage. Estas clases son BitmapSources y se pueden usar casi de manera intercambiable. El WriteableBitmap proporciona acceso a sus datos de píxeles a través de su propiedad PixelBuffer :

byte[] pixelArray = myWriteableBitmap.PixelBuffer.ToArray(); // convert to Array Stream pixelStream = wb.PixelBuffer.AsStream(); // convert to stream

De lo contrario, tendrá que adquirir los píxeles de donde el BitmapImage los obtuvo. Dependiendo de cómo se haya inicializado BitmapImage, es posible que pueda encontrar su origen desde su propiedad UriSource . WinRT Xaml Toolkit tiene un método de extensión FromBitmapImage para crear un WriteableBitmap a partir de un BitmapImage basado en su UriSource.

Una opción fea sería convertir el BitmapImage en una Imagen, crear un RenderTargetBitmap basado en la Imagen y luego obtener sus Pixels con RenderTargetBitmap. CopyPixelsAsync ()