Dev (Back & Front)ARTIGO

Converter Imagem em Array e Array em Imagem

Olá, pessoal, hoje eu gostaria de mostrar
duas funcionalidades legais que precisei em um certo desenvolvimento. Acredito
que é de grande valia.

Requisitos:

  • Visual Studio .NET 2008
  • Linguagem: C#

Essa funcionalidade pode ser usada nas ferramentas mais antigas do Visual
Studio .NET, como 2003 e 2005; ainda não testei, mas não vejo nenhuma
restrição.

Em resumo, o que mostro é como transformar uma imagem em
Array, guardá-la em um local e depois transformar em imagem novamente. Em
breve vou escrever um artigo que visualiza imagem do tipo TIF na web e vou usar
esse código ensinado hoje.

Hoje não veremos em funcionamento, vou só lançar a idéia,
por exemplo: ao pegar uma imagem de upload ou local mesmo, transformei-a em
Array, gravei no banco de dados, XML ou TXT. Depois eu peguei esses
dados em Array e transformei na imagem novamente.

Com esse decreto do governo brasileiro de economizar papel e
transformar tudo em digital, o que mostro hoje pode ter grande valia para
projetos futuros.

É importante importar a classe System.Drawing.Imagem antes de qualquer
coisa, mas ao digitar na ferramenta será sugerido automaticamente. O código abaixo mostra essa conversão de imagem para ByteArray, passando dois
parâmetros, a imagem e o formato:

public static byte[] ConvertImageToByteArray(Image image, ImageFormat imageFormat)<br />        {<br />            if (image == null)<br />                return null;<br /><br />            MemoryStream ms = new MemoryStream();<br />            image.Save(ms, imageFormat);<br />            return ms.ToArray();<br />        }

Note que o método retorna um Array de byte.

Já o outro método que faz o inverso: 

public static Image ConvertByteArrayToImage(byte[] byteArray)<br />        {<br />            if (byteArray == null || byteArray.Length == 0)<br />            {<br />                return (null);<br />            }<br /><br />            return (Image.FromStream(new MemoryStream(byteArray)));<br />        }

Note que o código acima recebe apenas o byteArray e transforma em imagem. O tipo de
retorno é Image.

Bom, agora basta chamar o código normalmente, veja o exemplo abaixo:

byte[] arrayImagem = ConvertImageToByteArray(SUA_IMAGEM, ImageFormat.Gif);

Depois disso, o código é retornado automaticamente; basta depois inserir no banco de dados.

Para voltar com a imagem, também é simples: faça um select no banco de dados e o retorno em array de byte passo para o outro método.

Image img = ConvertByteArrayToImage(imagem_do_banco);

Bom, eu fico por aqui. Qualquer dúvida pode entrar em contato pelo site.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil