none
convertir una imagen a bytes para guardarla en una base de datos RRS feed

  • Pregunta

  • mi problema es , que necesito guardar códigos QR en mi base de datos, tengo el código el cual me genera los QR y me los guarda e una carpeta, también conseguí un código el cual convierte  una imagen a bytes pero el cual me pide un objeto tipo image , ahora lo que no se es como instanciar la imagen que se guardo de mi qr y pasar ese parametro al metodo para convertirla

    //este es mi codigo para crear y guardar en una carpeta los codigos QR
    
    try
            {
                QRCodeEncoder encoder = new QRCodeEncoder();
                Bitmap img = encoder.Encode(TextBox1.Text);
    
                img.Save(@"C:\Users\Administrador\Documents\Visual Studio 2015\WebSites\WebSite1\"+TextBox1.Text+".jpg", ImageFormat.Jpeg);
                
    
                Image2.ImageUrl = TextBox1.Text+".jpg";
                Image2.Height = 200;
                Image2.Width = 200;
    
            
            }
            catch (Exception Exd)
            {
                
                Label1.Text = Exd.Message;
            }

     
    //Este es mi metodo para covertirlo a bytes 
    
    public static byte[] Convertir_Imagen_Bytes(System.Drawing.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;
        }

    miércoles, 26 de abril de 2017 16:32

Respuestas

  • hola

    >>pero el cual me pide un objeto tipo image

    pero si necesitas el byte[] de la imagen y partes de un archivo solo debes usar

    byte[] imagen = File.ReadAllBytes("ruta imagen");

    asi de simple y directo


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de abril de 2017 13:09

Todas las respuestas

  • Pero si ya tienes el codigo que convierte la imagen a bytes. Cierto que hay que pasarle un Image, pero el Image ya lo tienes tambien: es ese "Bitmap img" que tienes en la primera subrutina (la clase Bitmap hereda de Image).


    Por cierto, la rutina que tienes para convertir a bytes es muy poco eficiente: primero salva los bytes a un archivo y luego vuelve a leerlos del archivo y borra el archivo. No hay ninguna necesidad de hacer todo esto: el metodo Save del Image (o del Bitmap) permite salvar a un Stream en lugar de un archivo. Le puedes pasar un MemoryStream y luego llamas al .ToArray del MemoryStream, y eso ya te devuelve los bytes. Asi funciona todo directamente en memoria sin pasar por el disco.
    jueves, 27 de abril de 2017 13:00
  • hola

    >>pero el cual me pide un objeto tipo image

    pero si necesitas el byte[] de la imagen y partes de un archivo solo debes usar

    byte[] imagen = File.ReadAllBytes("ruta imagen");

    asi de simple y directo


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de abril de 2017 13:09