Converter imagem para byte e de byte para imagem em C# (CSharp)
Postado em : 28/11/2015
Classe para converter e comparar Imagens
Para converter uma Imagem para byte array:
ConverterImagem.imageToByteArray(imagem)
Onde o valor deve ser umImage
A função retorna umbyte[]
byte array com a imagem convertida
Quando for armazenar sua imagem no banco de dados converta a imagem e armazene o resultado embyte[]
byte array
Para converter um byte array para Imagem:
ConverterImagem.byteArrayToImage(imagem)
Onde o valor deve ser umbyte[]
byte array
A função retorna umaImage
com a imagem convertida
Quando fizer a leitura no banco de dados converta debyte[]
byte array paraImage
para pode exibir as imagens
Para comparar duas Imagens:
ConverterImagem.ComparaImagem(imagem1, imagem2)
Onde o valor deve ser de duas imagens podendo ser passados os campos comoImage
oubyte[]
byte array
A função retorna um valorBoolean
sendotrue
se as duas imagens forem iguais efalse
se não forem iguais
Crie uma classe em seu projeto com o nome de ConverterImagem.cs
e cole o código abaixo.
/* * Converte imagem de Image para byte array e compara duas imagens para verificar se são iguais * * Para guardar uma imagem em um banco de dados você converte para byte e armazena no banco, * quando da leitura do banco de dados você deve converter novamente para imagem * * * Visite nossa página http://www.codigoexpresso.com.br * * * public byte[] imageToByteArray(Imagem) * Converte uma imagem no formato 'image' para um 'byte array' * * public Image byteArrayToImage(Imagem) * Converte uma imagem de 'byte array' para uma 'image' * * public Boolean ComparaImagem(Imagem1, Imagem2) * Compara duas imagens retornando 'true' se as imagens forem iguais * pode-se informar duas imagens como 'image' ou já convertidas para 'byte array' * */ using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; class ConverterImagem { /// <summary> /// Converte de Image para byte array /// </summary> /// <param name="imageIn">Image</param> /// <returns>byte array</returns> public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } /// <summary> /// Converte de byte array para Image /// </summary> /// <param name="byteArrayIn">Imagem byte array</param> /// <returns>Image</returns> public Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } /// <summary> /// Compara dois image /// </summary> /// <param name="Imagem1">Image</param> /// <param name="Imagem2">Image</param> /// <returns>Boolean (true) se as imagens forem iguais e (false) se as imagens forem diferentes</returns> public Boolean ComparaImagem(System.Drawing.Image Imagem1, System.Drawing.Image Imagem2) { if (imageToByteArray(Imagem1) == imageToByteArray(Imagem2)) { return true; } return false; } /// <summary> /// Compara dois image convertidos em byte array /// </summary> /// <param name="Imagem1">byte array de uma imagem</param> /// <param name="Imagem2">byte array de uma imagem</param> /// <returns>Boolean (true) se as imagens forem iguais e (false) se as imagens forem diferentes</returns> public Boolean ComparaImagem(byte[] Imagem1, byte[] Imagem2) { if (Imagem1==Imagem2) { return true; } return false; } }
Comentários
O procedimento é converter para byte salvar no banco e depois converter para imagem novamente e não pra texto.
Ola cara , tudo bem? estou com o seguinte problema se puder me ajudar agradeço. Estou salvando uma foto no banco de dados no tipo byte[] , porém quando trago ela de la para fazer o inverso não estou conseguindo converter de string para byte , poderia me ajudar por favor? Sou novo na programação obrigado.