Reduza o tamanho do arquivo PNG usando C#

Reduza o tamanho do arquivo PNG usando C#

O armazenamento do sistema é um assunto crítico nesta era moderna da tecnologia. A quantidade de dados está aumentando a cada dia e a representação visual dos arquivos de dados ganhou muita popularidade. No entanto, existem muitas maneiras de compactar formatos de arquivo de imagem, mas a qualidade da imagem não deve ser comprometida. Portanto, usaremos esta API de compactação de imagem .NET para compactar as imagens PNG. Nesta postagem do blog, aprenderemos como reduzir o tamanho do arquivo PNG usando C# programaticamente.

Abordaremos os seguintes pontos neste artigo:

Instalação da API de compactação de imagem

Essa biblioteca oferece uma ampla variedade de métodos e propriedades para manipular e processar vários formatos de arquivo de imagem, como JPEG, TIFF e muito mais. Há duas maneiras de instalar essa API em seu projeto .NET.

Portanto, você pode baixar os arquivos DLL ou executar o seguinte comando no gerenciador de pacotes NuGet.

Install-Package Aspose.Imaging

Como reduzir o tamanho do arquivo PNG usando C

Você pode ver uma enorme pilha de métodos e propriedades aqui para compactar os formatos de arquivo de imagem. Portanto, escreveremos as etapas e o trecho de código para compactar o arquivo PNG programaticamente.

Siga os seguintes passos:

  1. Carregue a imagem PNG de origem chamando o método Load.
  2. Invoque o método Save para salvar a imagem compactada no formato PNG.
  3. Defina um valor da propriedade Progressive que indica se esta PngOptions é progressiva.
  4. IndexedColor representa o tipo de cor em que cada pixel é um índice de paleta.
  5. Atribua o valor de CompressionLevel para definir a compactação máxima.
  6. O método GetCloseImagePalette obterá uma paleta de cores da imagem raster (paletiza a imagem) caso a imagem não tenha uma. Caso exista uma paleta, ela será utilizada ao invés de realizar cálculos.
// Carregue a imagem PNG de origem chamando o método Load 
        using (Image image = Image.Load("image.png"))
        {
        // Invoque o método Save para salvar a imagem compactada no formato PNG  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Defina um valor da propriedade Progressive que indique se este PngOptions é progressivo.
                Progressive = true,
            // IndexedColor representa o tipo de cor em que cada pixel é um índice de paleta 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Atribua o valor de CompressionLevel para definir a compactação máxima 
                CompressionLevel = 9,
            // O método GetCloseImagePalette obterá a paleta de cores da imagem raster (paletiza a imagem) caso a imagem não tenha uma. Caso exista paleta, ela será utilizada em vez de realizar cálculos. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

API de compressão de imagem - opções avançadas

Na seção anterior, aprendemos como reduzir o tamanho do arquivo PNG usando C#. Agora, vamos explorar alguns outros métodos e propriedades importantes dessa API de compactação de imagem. Nesta seção, faremos uma chamada de API personalizada para criar um arquivo PNG programaticamente.

Você pode seguir as etapas e o trecho de código mencionado abaixo:

  1. Inicialize uma instância da classe PngImage que cria uma imagem PNG de 100x100 px.
  2. O método LinearGradientBrush encapsula um Brush com um gradiente linear.
  3. Inicializa uma nova instância da estrutura Point com as coordenadas especificadas.
  4. Instancie uma instância da classe Graphics que representa os gráficos de acordo com o mecanismo gráfico usado na montagem atual.
  5. Preencha a imagem com o gradiente azul-transparente com o método FillRectangle.
  6. Crie um objeto da classe PngOptions.
  7. Defina um valor da propriedade Progressive que indica se esta PngOptions é progressiva.
  8. Você pode definir a resolução horizontal e vertical para 96 pixels por polegada inicializando a classe ResolutionSetting.
  9. Defina o tipo de cor atribuindo um valor à propriedade ColorType.
  10. Atribua um valor à propriedade CompressionLevel para definir o nível máximo de compactação.
  11. A propriedade FilterType define o tipo de filtro usado durante o processo de salvamento do arquivo PNG.
  12. Defina o número de bits por canal atribuindo um valor à propriedade BitDepth.
  13. Salve em um arquivo chamando o método Save.

    // Inicialize uma instância da classe PngImage que cria uma imagem PNG de 100x100 px. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // O método LinearGradientBrush encapsula um Brush com um gradiente linear 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Inicializa uma nova instância da estrutura Point com as coordenadas especificadas. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Instancia uma instância da classe Graphics que representa os gráficos de acordo com o mecanismo gráfico usado na montagem atual.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Preencha a imagem com o gradiente azul-transparente com o método FillRectangle . 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Crie um objeto da classe PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // define um valor da propriedade Progressive que indica se este PngOptions é progressivo. 
        saveOptions.Progressive = true;

        // Defina a resolução horizontal e vertical para 96 pixels por polegada inicializando a classe ResolutionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // defina o tipo de cor atribuindo um valor à propriedade ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Atribua um valor à propriedade CompressionLevel para definir o nível máximo de compactação. 
        saveOptions.CompressionLevel = 9;

        // A propriedade FilterType define o tipo de filtro usado durante o processo de salvamento do arquivo png.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // defina o número de bits por canal atribuindo um valor à propriedade BitDepth.
        saveOptions.BitDepth = 8;

        // Salve em um arquivo chamando o método Save. 
        pngImage.Save( "output.png", saveOptions);
    }

Você pode ver a saída na imagem abaixo:

API de compressão de imagem

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a API sem limitações de avaliação.

Resumindo

Podemos encerrar este post aqui. Esperamos que você tenha aprendido como reduzir o tamanho do arquivo PNG usando C# programaticamente. Além disso, passamos por alguns outros métodos avançados dessa API de compactação de imagem, onde criamos um arquivo PNG otimizado. No entanto, você pode visitar este link para mais métodos e propriedades sobre o formato de arquivo PNG. Acima de tudo, não pule a documentação desta biblioteca .NET para conhecer o ecossistema. Escreveremos sobre outros tópicos úteis em futuras postagens do blog. Portanto, fique em contato com conholdate.com para atualizações.

Faça uma pergunta

Você pode nos informar sobre suas perguntas ou dúvidas em nosso fórum.

Perguntas frequentes

Como compactar imagem PNG em C #?

Instale esta API de compactação de imagem .NET para compactar e manipular formatos de arquivo PNG. Ele oferece métodos e propriedades para compactar outros formatos de arquivo de imagem populares, como JPEG, TIFF e muito mais.

Como minimizar o tamanho do arquivo de imagem para o formato PNG?

Este método permite reduzir o tamanho do arquivo PNG usando C# programaticamente. Além disso, você pode configurar a chamada da API de acordo com seus requisitos.

Como redimensionar uma imagem PNG no exemplo de código C#?

Siga este link para saber sobre o snippet de código que redimensiona uma imagem PNG programaticamente. Essa API .NET é poderosa e oferece uma ampla variedade de métodos e propriedades.

Veja também