Clase para convertir imágenes a Bytes y viceversa, para poder ser guardadas en una base de datos

Si alguna vez te has preguntado ¿como guardar una imagen en una base datos?, esta sencilla clase en C# te podría servir, en una base datos no podemos guardar imágenes con su formato original es decir .jpg, .png, .gif, etc, ¿entonces como la debemos guardar? la debemos convertir a bytes para poder almacenarla en la base de datos, luego para poder visualizar la imagen desde una aplicación,  debemos hacer el proceso inverso ¿como así? o sea la debemos convertir de bytes a su formato original (.jpg, .png, .gif, etc), a continuación te dejo el código de la clase:

CÓDIGO

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.IO;

using System.Windows.Forms;

namespace Ejmeplo

{
class Imagen

{

//METODO PARA REDIMENSIONAR LA IMAGEN

public String Redimensionar(Image Imagen_Original, string nombre)

{

//RUTA DEL DIRECTORIO TEMPORAL

String DirTemp = Path.GetTempPath() + @"\" + nombre + ".jpg";

//IMAGEN ORIGINAL A REDIMENSIONAR

Bitmap imagen = new Bitmap(Imagen_Original);

//CREAMOS UN MAPA DE BIT CON LAS DIMENSIONES QUE QUEREMOS PARA LA NUEVA IMAGEN

Bitmap nuevaImagen = new Bitmap(Imagen_Original.Width, Imagen_Original.Height);

//CREAMOS UN NUEVO GRAFICO

Graphics gr = Graphics.FromImage(nuevaImagen);

//DIBUJAMOS LA NUEVA IMAGEN

gr.DrawImage(imagen, 0, 0, nuevaImagen.Width, nuevaImagen.Height);

//LIBERAMOS RECURSOS

gr.Dispose();

//GUARDAMOS LA NUEVA IMAGEN ESPECIFICAMOS LA RUTA Y EL FORMATO

nuevaImagen.Save(DirTemp, System.Drawing.Imaging.ImageFormat.Jpeg);

//LIBERAMOS RECURSOS

nuevaImagen.Dispose();

imagen.Dispose();

return DirTemp;

}

//FUNCION PARA CONVERTIR LA IMAGEN A BYTES

public Byte[] Imagen_A_Bytes(String ruta)

{

FileStream foto = new FileStream(ruta, FileMode.OpenOrCreate, FileAccess.ReadWrite);

Byte[] arreglo = new Byte[foto.Length];

BinaryReader reader = new BinaryReader(foto);

arreglo = reader.ReadBytes(Convert.ToInt32(foto.Length));

return arreglo;

}

//FUNCION PARA CONVERTIR DE BYTES A IMAGEN

public Image Bytes_A_Imagen(Byte[] ImgBytes)

{

Bitmap imagen = null;

Byte[] bytes = (Byte[])(ImgBytes);

MemoryStream ms = new MemoryStream(bytes);

imagen = new Bitmap(ms);

return imagen;

}


}

}

Descargar código fuente Aquí

Dudas, escríbeme a:

Autor: Nelson Y. López Hidalgo

Email: nelson.hidalgo1@gmail.com

About these ads

Publicado el 22 marzo 2010 en C#. Añade a favoritos el enlace permanente. 7 comentarios.

  1. oies una duda funciona igual para aspx???

  2. Sabes cómo se haría la función Image Bytes_A_Imagen para php
    Un saludo y muchas gracias

    • Tocara investigar un poco, pero no veo la necesidad de hacer eso, es mas liviano y fácil guardar en una carpeta las imagines y en una tabla el nombre de dichas imágenes, para luego concatenar las con la ruta de las fotos, es la forma mas usada y creo que es la primera opción que todo desarrollador debe contemplar, bye hasta pronto y disculpa por la respuesta tan tardía.

  3. auxilio, tu codigo me manda errores

    Error 1 Asegúrese de que la clase definida en este archivo de código concuerda con el atributo ‘inherits’ y que extiende la clase base correcta (p. ej. Page o UserControl). C:\Users\BECARIO2\Documents\Visual Studio 2010\ultimo\Default.aspx.cs 8 33 C:\…\ultimo\
    Error 2 ‘ASP.default_aspx.GetTypeHashCode()’: no se encontró ningún miembro adecuado que invalidar c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\ultimo\a802fb08\a1e6458\App_Web_asprh4lk.0.cs
    Error 3 ‘ASP.default_aspx.ProcessRequest(System.Web.HttpContext)’: no se encontró ningún miembro adecuado que invalidar c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\ultimo\a802fb08\a1e6458\App_Web_asprh4lk.0.cs
    Error 4 ‘ASP.default_aspx’ no implementa el miembro de interfaz ‘System.Web.IHttpHandler.IsReusable’ c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\ultimo\a802fb08\a1e6458\App_Web_asprh4lk.0.cs

  4. Como puedo recuperar la imagen de nuevo a mi programa original despues de guardarlo en la base de datos?

  5. aracelly1700

    me gusta tu codigo pero eso codigo tambien me puede guardar (cualquier tipo de documentos o archivos) en la base de datos sql server desdes visual stuido o estaecho pagina web
    si no en escritorio me podrias ayudar

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 82 seguidores

%d personas les gusta esto: