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.