Salvando imagens no banco com C#, Entity e SQL Server

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