Principales respuestas
Como obtener la imagen de un control image

Pregunta
-
Saludos:
Tengo una funcion que me realiza la conversion de una imagen a un array de bytes:
public byte[] Image2Bytes(Image img) { string sTemp = Path.GetTempFileName(); FileStream fs = new FileStream(sTemp, FileMode.OpenOrCreate, FileAccess.ReadWrite); img.Save(fs, System.Drawing.Imaging.ImageFormat.Png); fs.Position = 0; // int imgLength = Convert.ToInt32(fs.Length); byte[] bytes = new byte[imgLength]; fs.Read(bytes, 0, imgLength); fs.Close(); return bytes; }
Tengo tambien un control de tipo image que ya tiene cargada una imagen. El problema es que nose como obtener la imagen de este control para enviarla como parametro a mi funcion y asi poder realizar la conversion. (He visto muchas funciones que hacen esta conversion a partir de la direccion de la imagen cargada al control image, Pero a mi objetivo es poder extraer esta imagen en un objeto que maneje imagenes) y asi poder enviarlo a mi funcion como parametro.
Respuestas
-
Buenas Limber, puedes usar el siguiente método para guardar la imagen de un control Image en formato PNG:
using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; ... public static void SaveImage(Image image, string path) { var bitmap = new WriteableBitmap(image.Source as BitmapSource); var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmap)); using (var stream = File.Open(path, FileMode.OpenOrCreate)) { encoder.Save(stream); } }
Un saludo,
Miguel.
- Propuesto como respuesta jcloquell viernes, 10 de junio de 2011 9:04
- Marcado como respuesta Eduardo PorteschellerModerator martes, 26 de julio de 2011 17:17
Todas las respuestas
-
Hola Limber.
No se muy bien que quieres hacer
¿que tipo de clase es el parametro de entrada?, ya que System.Windows.Controls.Image no parece ser.
¿estas usando WPF o Silverlight?
Si entiendo algo de lo que quieres hacer, es posible que puedas hacerlo con un WritableBitmap, ya que esta clase te va a permitir obtener los pixeles de cualquier imagen representada en un control o incluso un control en si.
http://msdn.microsoft.com/es-es/library/system.windows.media.imaging.writeablebitmap.aspx
Saludos
David González
MCP, MCTS
Visita mi Blog en: http://www.dgzornoza.com/ -
Buenas Limber, puedes usar el siguiente método para guardar la imagen de un control Image en formato PNG:
using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; ... public static void SaveImage(Image image, string path) { var bitmap = new WriteableBitmap(image.Source as BitmapSource); var encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmap)); using (var stream = File.Open(path, FileMode.OpenOrCreate)) { encoder.Save(stream); } }
Un saludo,
Miguel.
- Propuesto como respuesta jcloquell viernes, 10 de junio de 2011 9:04
- Marcado como respuesta Eduardo PorteschellerModerator martes, 26 de julio de 2011 17:17