online img imagetobytearray imagen convertir convert array c# windows-phone-8.1 bytearray

c# - img - image to byte[] online



Convertir BitmapImage en byte (3)

Creo que no se puede hacer en esta plataforma. Cambio mi proyecto a Windows Phone Silverlight / 8.0 y funciona todo.

public static BitmapImage BytesToImage(byte[] bytes) { BitmapImage bitmapImage = new BitmapImage(); try { using (MemoryStream ms = new MemoryStream(bytes)) { bitmapImage.SetSource(ms); return bitmapImage; } } finally { bitmapImage = null; } } public static byte[] ImageToBytes(BitmapImage img) { using (MemoryStream ms = new MemoryStream()) { WriteableBitmap btmMap = new WriteableBitmap(img); System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100); img = null; return ms.ToArray(); } }

Tengo un problema al convertir BitmapImage en byte []. Intenté muchas soluciones y nada funciona, cada vez que recibo diferentes errores.

Por ejemplo, encontré buenas soluciones pero tampoco funciona. ¿Qué pasa con eso?

Estoy usando Windows Phone 8.1.

public static byte[] ImageToBytes(BitmapImage img) { using (MemoryStream ms = new MemoryStream()) { WriteableBitmap btmMap = new WriteableBitmap(img); System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100); img = null; return ms.ToArray(); } }

esto fue tomado de aquí: Convertir imagen de mapa de bits en matriz de bytes (teléfono Windows 8)

No se da ningún argumento que corresponda al parámetro formal requerido ''pixelHeight'' de ''WriteableBitmap.WriteableBitmap (int, int)''

El tipo o el nombre del espacio de nombres ''Extensiones'' no existe en el espacio de nombres ''System.Windows.Media.Imaging'' (¿falta una referencia de ensamblado?)

o si alguien tiene otra idea sobre cómo convertirlo, publícalo. ¡Muchas gracias por cualquier ayuda!

También probé esto: BitmapImage to byte []

pero había un problema con los usos

''BitmapImage'' es una referencia ambigua entre ''System.Windows.Media.Imaging.BitmapImage'' y ''Windows.UI.Xaml.Media.Imaging.BitmapImage''

entonces usé "BitmapEncoder" pero no tiene un método como Save and Frame.


Has probado

MemoryStream ms = new MemoryStream(); WriteableBitmap wb = new WriteableBitmap(myImage); wb.SaveJpeg(ms, myImage.PixelWidth, myImage.PixelHeight, 0, 100); byte[] imageBytes = ms.ToArray();

También puedes usar el método de extensión aquí

public static class MyExtensions { public static Byte[] ByteFromImage(this System.Windows.Media.Imaging.BitmapImage imageSource) { Stream stream = imageSource.StreamSource; Byte[] imagebyte = null; if (stream != null && stream.Length > 0) { using (BinaryReader br = new BinaryReader(stream)) { imagebyte = br.ReadBytes((Int32)stream.Length); } } return imagebyte; } }

y luego llamar

System.Windows.Media.Imaging.BitmapImage myImage = new System.Windows.Media.Imaging.BitmapImage(); byte[] imageBytes = myImage.ByteFromImage();