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.