Reduzca el tamaño del archivo PNG usando C#

Reduzca el tamaño del archivo PNG usando C#

El sistema de almacenamiento es un tema fundamental en esta era moderna de la tecnología. La cantidad de datos aumenta cada día y la representación visual de los archivos de datos ha ganado mucha popularidad. Sin embargo, hay muchas formas de comprimir formatos de archivo de imagen, pero la calidad de la imagen no debe verse comprometida. Por lo tanto, utilizaremos esta API de compresión de imágenes .NET para comprimir las imágenes PNG. En esta publicación de blog, aprenderemos cómo reducir el tamaño del archivo PNG usando C# programáticamente.

Cubriremos los siguientes puntos en este artículo:

Instalación de la API de compresión de imágenes

Esta biblioteca ofrece una amplia gama de métodos y propiedades para manipular y procesar varios formatos de archivo de imagen como JPEG, TIFF y más. Hay dos formas de instalar esta API en su proyecto .NET.

Por lo tanto, puede descargar los archivos DLL o ejecutar el siguiente comando en el administrador de paquetes NuGet.

Install-Package Aspose.Imaging

Cómo reducir el tamaño del archivo PNG usando C#

Puede ver una gran cantidad de métodos y propiedades aquí para comprimir los formatos de archivo de imagen. Por lo tanto, escribiremos los pasos y el fragmento de código para comprimir el archivo PNG mediante programación.

Siga los siguientes pasos:

  1. Cargue la imagen PNG de origen llamando al método Load.
  2. Invoque el método Save para guardar la imagen comprimida en formato PNG.
  3. Establezca un valor de propiedad Progressive que indique si este PngOptions es progresivo.
  4. IndexedColor representa el tipo de color donde cada píxel es un índice de paleta.
  5. Asigne el valor de CompressionLevel para establecer la compresión máxima.
  6. El método GetCloseImagePalette obtendrá una paleta de colores de la imagen ráster (paletiza la imagen) en caso de que la imagen no tenga una. En caso de que exista una paleta, se utilizará en lugar de realizar los cálculos.
// Cargue la imagen PNG de origen llamando al método Load 
        using (Image image = Image.Load("image.png"))
        {
        // Invoque el método Guardar para guardar la imagen comprimida en formato PNG  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // Establezca un valor de la propiedad Progresivo que indique si este PngOptions es progresivo.
                Progressive = true,
            // IndexedColor representa el tipo de color donde cada píxel es un índice de paleta 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // Asigne el valor de CompressionLevel para establecer la compresión máxima 
                CompressionLevel = 9,
            // El método GetCloseImagePalette obtendrá la paleta de colores de la imagen ráster (paletiza la imagen) en caso de que la imagen no tenga una. En caso de que exista una paleta, se utilizará en su lugar para realizar los cálculos. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

API de compresión de imágenes: opciones avanzadas

En la sección anterior, aprendimos cómo reducir el tamaño de un archivo PNG usando C#. Ahora, exploremos algunos otros métodos y propiedades destacados de esta API de compresión de imágenes. En esta sección, realizaremos una llamada API personalizada para crear un archivo PNG mediante programación.

Puede seguir los pasos y el fragmento de código mencionado a continuación:

  1. Inicializa una instancia de la clase PngImage que crea una imagen PNG de 100x100 px.
  2. El método LinearGradientBrush encapsula un Brush con un degradado lineal.
  3. Inicializa una nueva instancia de la estructura Point con las coordenadas especificadas.
  4. Cree una instancia de la clase Graphics que represente los gráficos según el motor de gráficos utilizado en el ensamblaje actual.
  5. Rellene la imagen con el degradado azul transparente con el método FillRectangle.
  6. Cree un objeto de la clase OpcionesPng.
  7. Establezca un valor de propiedad Progressive que indique si este PngOptions es progresivo.
  8. Puede establecer la resolución horizontal y vertical en 96 píxeles por pulgada inicializando la clase ResolutionSetting.
  9. Establece el tipo de color asignando un valor a la propiedad ColorType.
  10. Asigne un valor a la propiedad CompressionLevel para establecer el nivel máximo de compresión.
  11. La propiedad FilterType establece el tipo de filtro utilizado durante el proceso de guardado del archivo PNG.
  12. Configure el número de bits por canal asignando un valor a la propiedad BitDepth.
  13. Guarde en un archivo llamando al método Save.

    // Inicializa una instancia de la clase PngImage que crea una imagen PNG de 100x100 px. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // El método LinearGradientBrush encapsula un Brush con un degradado lineal 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // Inicializa una nueva instancia de la estructura Point con las coordenadas especificadas. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Cree una instancia de la clase Graphics que represente los gráficos de acuerdo con el motor de gráficos utilizado en el ensamblaje actual.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // Rellene la imagen con el degradado azul transparente con el método FillRectangle. 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // Crear un objeto de la clase PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // establece un valor de la propiedad Progressive que indica si este PngOptions es progresivo. 
        saveOptions.Progressive = true;

        // Establezca la resolución horizontal y vertical en 96 píxeles por pulgada inicializando la clase ResolutionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // establezca el tipo de color asignando un valor a la propiedad ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // Asigne un valor a la propiedad CompressionLevel para establecer el nivel máximo de compresión. 
        saveOptions.CompressionLevel = 9;

        // La propiedad FilterType establece el tipo de filtro utilizado durante el proceso de guardado del archivo png.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // establezca el número de bits por canal asignando un valor a la propiedad BitDepth.
        saveOptions.BitDepth = 8;

        // Guarde en un archivo llamando al método Guardar. 
        pngImage.Save( "output.png", saveOptions);
    }

Puedes ver la salida en la siguiente imagen:

API de compresión de imágenes

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para probar la API sin limitaciones de evaluación.

Resumiendo

Podemos terminar esta publicación de blog aquí. Esperamos que haya aprendido cómo reducir el tamaño del archivo PNG usando C# programáticamente. Además, hemos pasado por otros métodos avanzados de esta API de compresión de imágenes en los que hemos creado un archivo PNG optimizado. Sin embargo, puede visitar este enlace para obtener más métodos y propiedades con respecto al formato de archivo PNG. Sobre todo, no te saltes la documentación de esta librería .NET para conocer el ecosistema. Escribiremos sobre otros temas útiles en futuras publicaciones de blog. Por lo tanto, manténgase en contacto con conholdate.com para obtener actualizaciones.

Hacer una pregunta

Puede informarnos acerca de sus preguntas o consultas en nuestro foro.

preguntas frecuentes

¿Cómo comprimir una imagen PNG en C#?

Instale esta API de compresión de imágenes .NET para comprimir y manipular formatos de archivo PNG. Ofrece métodos y propiedades para comprimir otros formatos de archivo de imagen populares como JPEG, TIFF y más.

¿Cómo minimizar el tamaño del archivo de imagen para el formato PNG?

Este método le permite reducir el tamaño del archivo PNG usando C# programáticamente. Además, puede configurar la llamada API según sus requisitos.

¿Cómo cambiar el tamaño de una imagen PNG en el ejemplo de código C#?

Siga este enlace para conocer el fragmento de código que cambia el tamaño de una imagen PNG mediante programación. Esta API de .NET es potente y ofrece una amplia gama de métodos y propiedades.

Ver también