por Cesar Cassiano Schimanco

Ajustar qualidade (compressão) ao salvar imagem - C#

Como sabemos, JPEG (ou JPG) é um método de compressão de imagens e seu grau de compactação influencia no tamanho de armazenamento e na qualidade da imagem.
Abaixo veremos dois exemplos de como modificar este nível de compressão em C#. Lembrando que o nível de compressão em C# (Encoder.Quality) vai de 0 até 100, onde 0 representa o nível máximo de compressão e 100 nenhuma compactação.

Exemplo 1. Ajustar a qualidade da imagem JPEG para 100% de qualidade, ou seja, sem compressão.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class jpg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //carregando a imagem de exemplo
        using (Bitmap img = new Bitmap(MapPath("~/imagem.jpg")))
        {
            //CodecInfo para imagens Jpeg
            ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders().First(enc => enc.FormatID == ImageFormat.Jpeg.Guid);
            //EncoderParameters que vai setar o nível de qualidade (compressão)
            EncoderParameters imgParams = new EncoderParameters(1);
            //Qualidade em 100L = 100% de qualidade - sem compressão
            imgParams.Param = new[] { new EncoderParameter(Encoder.Quality, 100L) };
            //Salvar a imagem a imagem
            img.Save(MapPath("~/nova-imagem.jpg"), codec, imgParams);
        }
    }
}

Exemplo 2. Reduzir a qualidade e consecutivamente o tamanho da imagem.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class jpg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //carregando a imagem de exemplo
        using (Bitmap img = new Bitmap(MapPath("~/imagem.jpg")))
        {
            //CodecInfo para imagens Jpeg
            ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders().First(enc => enc.FormatID == ImageFormat.Jpeg.Guid);
            //EncoderParameters que vai setar o nível de qualidade (compressão)
            EncoderParameters imgParams = new EncoderParameters(1);
            //Qualidade em 0L = máximo de compressão
            imgParams.Param = new[] { new EncoderParameter(Encoder.Quality, 0L) };
            //Salvar a imagem a imagem
            img.Save(MapPath("~/nova-imagem.jpg"), codec, imgParams);
        }
    }
}


86L geralmente é um bom equilíbrio entre qualidade de imagem e tamanho de armazenamento.
 

Resumo:

Neste artigo vimos como manipular níveis de compressão de JPGs para aumentar e também para diminuir o tamanho e qualidade de imagens em C#.

Comentários

Carregando comentários

Postar um novo comentário



Processando...