Salvando imagens no banco com C#, Entity e SQL Server
04 Set 2015De tão rápido que será este post, está mais para uma dica do que um tutorial.
Num projeto recente, precisei salvar imagens no banco usando o SQL Server Express e o Entity Framework. Então aqui vai minha dica para quem também precisa.
Preparando o modelo
Levando em conta o SQL Server, para salvar imagens numa tabela é preciso definir o tipo do dado como binário. Na sua classe, basta usar um array de byte.
public byte[] Imagem { get; set; }
Neste caso o Entity já entenderá que é um dado binário e criará a coluna na tabela corretamente.
Convertendo a imagem
A conversão é simples, basta utilizar os dois métodos abaixo.
public class Conversor
{
public static byte[] ImagemParaByte(Image imagem)
{
using (var stream = new MemoryStream())
{
imagem.Save(stream, ImageFormat.Png);
return stream.ToArray();
}
}
public static Image ByteParaImagem(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
return Image.FromStream(stream);
}
}
}
Então quando precisar converter o dado recebido do banco de dados basta usar o método ByteParaImagem. Quando precisar salvar, basta usar o método ImagemParaByte.
Simples não?
Até mais.