none
Como obtener la imagen de un control image RRS feed

  • 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.

     

    domingo, 29 de mayo de 2011 3:25

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.

    miércoles, 1 de junio de 2011 9:46

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/
    martes, 31 de mayo de 2011 18:08
  • 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.

    miércoles, 1 de junio de 2011 9:46