quarta-feira, 21 de julho de 2010

Reduzindo o tamanho de uma imagem

Fonte:
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/0bb016f3-9260-489e-b5b0-0b44df66dfa7

Obs.:
Adaptado por Marcos Guedes (Programação Brasil).


Como utilizar:
TrataImagem objImg = new TrataImagem();
// Reduz o tamanho da imagem com 25% de qualidade
objImg.reduzir("c:\\caminhoImagemOrigem.png", "c:\\caminhoImagemDestino25.jpg", 25);

// Reduz o tamanho da imagem com 50% de qualidade
objImg.reduzir("c:\\caminhoImagemOrigem.png", "c:\\caminhoImagemDestino50.jpg", 50);

// Reduz o tamanho da imagem com 100% de qualidade
objImg.reduzir("c:\\caminhoImagemOrigem.png", "c:\\caminhoImagemDestino100.jpg", 100);



Código da Classe:
using System;
using System.Drawing;
using System.Drawing.Imaging;

class TrataImagem
{
    public void reduzir(string caminhoArquivoOriginal, string caminhoArquivoDestino, long qualidade)
    {
        Bitmap myBitmap;
        ImageCodecInfo myImageCodecInfo;
        Encoder myEncoder;
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;

        // Create a Bitmap object based on a BMP file.
        myBitmap = new Bitmap(caminhoArquivoOriginal);

        // Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo("image/jpeg");

        // Create an Encoder object based on the GUID

        // for the Quality parameter category.
        myEncoder = Encoder.Quality;

        // EncoderParameter object in the array.
        myEncoderParameters = new EncoderParameters(1);

        // Save the bitmap as a JPEG file with quality level 25.            
        myEncoderParameter = new EncoderParameter(myEncoder, qualidade);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save(caminhoArquivoDestino, myImageCodecInfo, myEncoderParameters);
    }

    private static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
}

1 comentário:

  1. Aqui não funcionou, ele não da nenhum erro, porém também não cria a nova imagem...

    ResponderEliminar