Convertendo e salvando imagens via código


por Mauricio Junior em 1/1/2011 0


    Olá Internautas, gostaria de mostrar hoje como salvar uma imagem capturada pelo software depois de passada pelo scanner. Não vou mostrar a captura da imagem em si, mas vou mostrar como salvar a imagem do tipo TIF, JPG e PNG.
   
    São métodos simples e ao mesmo tempo com um poder para converter a imagem passada como parâmetro de entrada. Vamos ao código.
    Criei um classe específica chamada Util.cs e dentro dela coloquei o método code 1.1.
   
    /// <summary>
    /// Create a image codec (mimeType)
    /// </summary>
    public static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType.ToLower() == mimeType.ToLower())
                return encoders[j];
        }
        return null;
    }
    Code 1.1
   
    O método recebe como parâmetro do tipo String o tipo da imagem, por exemplo: image/jpeg, image/tiff e image/png. Esses são os tipos que usei para trabalhar com as imagens que tenho dentro do meu sistema ou que virão.
   
    Antes de tudo, importei as seguintes classes no início da classe. Code 1.2
   
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Collections.Generic;
    Code 1.2
   
    Ainda dentro da classe Util.cs, utilizei o método que coloca a imagem com uma certa qualidade. Code 1.3
   
    public static EncoderParameters CreateJpegEncoder(int aQuality)
    {
        EncoderParameters encoderParams = new EncoderParameters();
        EncoderParameter encoderParam;
        long[] quality = new long[1];
        quality[0] = aQuality; //0 to 100
        encoderParam = new EncoderParameter(Encoder.Quality, quality);
        encoderParams.Param[0] = encoderParam;
        return encoderParams;
    }
    Code 1.3
   
    Atribuí os parâmetros de Encoder com a qualidade recebida na entrada do método tipo Int. No final retornei o encoder. Para este método (code 1.3) serve para atribuir a uma imagem do tipo GIF, com qualidade passada, de zero a cem.
    Criei outro método  para fazer o mesmo procedimento com a imagem do tipo TIF.], ou seja, a conversão do TIF.
   
    public static EncoderParameters CreateTiffEncoder(EncoderValue CompressionType)
    {
        System.Drawing.Imaging.Encoder _Encoder = System.Drawing.Imaging.Encoder.Compression;

        EncoderParameters _EncoderParameters = new EncoderParameters(1);
        EncoderParameter _EncoderParameter;

        // Save the bitmap as a TIFF file with LZW compression.
        _EncoderParameter = new EncoderParameter(_Encoder, (long)CompressionType);
        _EncoderParameters.Param[0] = _EncoderParameter;
        return _EncoderParameters;
    }
    Code 1.4
   
    Dentro do método (Code 1.4) criei parâmetros; no caso 1 EncoderParameters para comprimir a imagem de forma correta. No final do método, retorno a variável de encoder. Todo o código até agora foi feito em uma classe específica. Pode ser feito um framework pequeno contendo as classe com os métodos e assim ser usado em outros projetos.
   
    Agora vou criar três métodos específicos para salvar a imagem localmente, ou seja, em três tipos de formato diferente como falados anteriormente.
   
    O code 1.5 mostra o método que recebe os dados e salva a imagem recebida em disco.
   
    public static void SaveJPG(Image Imagem, string FileName)
    {
        ImageCodecInfo _imageCodecInfo = Util.GetEncoderInfo("image/jpeg");
        Imagem.Save(FileName, _imageCodecInfo);
    }
    Code 1.5
   
    Todos os métodos seguem o mesmo padrão, muda apenas um dado específico. Veja o code 1.6.
   
    public static void SaveGIF(Image Imagem, string FileName)
    {
        ImageCodecInfo _imageCodecInfo = Util.GetEncoderInfo("image/gif");
        Imagem.Save(FileName, _imageCodecInfo);
    }
    Code 1.6
   
    Por último o formato TIF. Hoje muito usado em empresas financeiras. Code 1.7.
   
    public static void SaveTIF(Image Imagem, string FileName)
    {

        ImageCodecInfo _imageCodecInfo = Util.GetEncoderInfo("image/tiff");
        EncoderParameters EP = Util.CreateTiffEncoder(EncoderValue.CompressionCCITT4);

        Imagem.Save(FileName, _imageCodecInfo, EP);
    }
    Code 1.7
   
    Bom, acredito que tenha chegado à meta. Mostro como salvar imagem em três tipos e utilizando métodos particulares no momento da gravação da imagem. Em um outro artigo publicado anteriormente, mostrei como converter a imagem em Array e o Array em imagem. (Converte a imagem em array e o array em imagem)
   
    Assim, a imagem pode ser gravada em banco de dados caso queira ou então grava-lá localmente.
   
    Espero ter ajudado e qualquer dúvida pode entrar em contato pelo site.
  
voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Novo HTC com Windows Phone 7
Sistema de Login em ASP – Parte VI
Montando Menu Dinâmico com Banco de Dados
Sistema Calcula IMC e IGC no Celular
Problemas na acentuação
Chamando Programas de Dentro do Windows Forms
Vídeo: Aprendendo a trabalhar com o Office
O segredo de utilizar ModalPopupExtender
LG Optimus 7 com Windows Phone 7
Visual SourceSafe - Série 4
Usando themes ASP.NET 2.0 (Parte 1)
MSDN Code Gallery
Windows Form - Retornando valor entre formulários
M-Payment com Google Wallet
Vídeo: Análise do Android 3.0 por um especialista
Pagamento via celular
Descobrindo e criando tecla de atalho com Windows Forms
UPLOAD – Enviando imagem pela Internet
Microsoft Research Laptop Multi-Touch
Vídeo - Themes/Skin/Stylo
Focus()
Método SHA 256
Windows Phone no Brasil
VSS Versionador - Resumão
Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Alerta JavaScript com Link Button
Trabalhando com Ipersonate e Web
Search do Windows Live em Seu Site
IsData
Vídeo - Ler EventLog do Windows usando C#.NET
Dados via Post no VS 2005
Trabalhando com ENUM
Visual Studio .NET 2010 com temas
Visual Studio 11 Solution Explorer poderoso
Criando Teclas de Atalho no Windows Form