none
Recuperar Imagem do BD com LINQ TO SQL [RESOLVIDO] RRS feed

  • Pergunta

  • Boa Noite,

     

    Gostaria de receber algum código ou dica de como recuperar uma imagem gravada no banco de dados com LINQ TO SQL.

    Já consigo gravar no banco a imagem usando o LINQ. Agora preciso de recuperar. Não achei nada legal na internet. Todos os que achei, a pessoa armazena o path original da foto, mais nem sempre a foto fica no mesmo lugar no computador. Logo, preciso de gravar a imagem e recuperá-la independente do seu path original. Estou usando C# 3.5 + SQL Server 2005 + LINQ TO SQL.

    Agradecido!

    Watson Passos


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    • Editado WPassos quinta-feira, 2 de setembro de 2010 23:11
    quinta-feira, 2 de setembro de 2010 01:27

Respostas

  • Boa noite a todos,

    Segue abaixo a resposta para o meu problema. Achei em outro forum e quero copartilhar.

     

    01.using System;
    02.using System.Drawing;
    03.using System.IO;
    04.using System.Linq;
    05.using System.Windows.Forms;
    06. 
    07.namespace StoreImagesToSqlCe
    08.{
    09.public partial class Form1 : Form
    10.{
    11.public Form1()
    12.{
    13.InitializeComponent();
    14.}
    15. 
    16.private void buttonStoreImageToDb_Click(object sender, EventArgs e)
    17.{
    18.// Open the DataContext
    19.Database1 db = new Database1("Data Source=Database1.sdf");
    20.try
    21.{
    22.// Convert System.Drawing.Image to a byte[]
    23.byte[] file_byte = ImageToByteArray(pictureBox1.Image);
    24.// Create a System.Data.Linq.Binary - this is what an "image" column is mapped to
    25.System.Data.Linq.Binary file_binary = new System.Data.Linq.Binary(file_byte);
    26.Images img = new Images
    27.{
    28.Image = file_binary,
    29.ImageName = "Erik testing "
    30.};
    31.db.Images.InsertOnSubmit(img);
    32.}
    33.finally
    34.{
    35.// Save
    36.db.SubmitChanges();
    37.}
    38.}
    39. 
    40.private void buttonRetireveImageFromDb_Click(object sender, EventArgs e)
    41.{
    42.// Open the DataContext
    43.Database1 db = new Database1("Data Source=Database1.sdf");
    44. 
    45.// Get as single image from the database
    46.var img = (from image in db.Images
    47.where image.ImageName == "Erik testing"
    48.select image).Single();
    49.// Convert the byte[] to an System.Drawing.Image
    50.pictureBox1.Image = ByteArrayToImage(img.Image.ToArray());
    51.}
    52. 
    53.private byte[] ImageToByteArray(System.Drawing.Image imageIn)
    54.{
    55.using (MemoryStream ms = new MemoryStream())
    56.{
    57.imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    58.return ms.ToArray();
    59.}
    60.}
    61. 
    62.public Image ByteArrayToImage(byte[] byteArrayIn)
    63.{
    64.using (MemoryStream ms = new MemoryStream(byteArrayIn))
    65.{
    66.Image returnImage = Image.FromStream(ms);
    67.return returnImage;
    68.}
    69.}
    70. 
    71.}

    72.}

     

    Abraços!


    Watson Passos Especializando em Gerenciamento de Projetos Graduado em Sistemas de Informação
    • Marcado como Resposta WPassos quinta-feira, 2 de setembro de 2010 23:11
    quinta-feira, 2 de setembro de 2010 23:10