使用 C# 减小 PNG 文件的大小

使用 C# 减小 PNG 文件的大小

在这个现代技术时代,系统存储是一个关键主题。数据量每天都在增加,数据文件的可视化表示已经获得了很大的普及。然而,有很多方法可以压缩图像文件格式,但不应影响图像质量。因此,我们将使用这个 .NET 图像压缩 API 来压缩 PNG 图像。在这篇博文中,我们将学习如何使用 C# 以编程方式减小 PNG 文件大小。

我们将在本文中介绍以下几点:

图片压缩API安装

该库提供了广泛的方法和属性来操作和处理各种图像文件格式,例如 JPEGTIFF 等。有两种方法可以将此 API 安装到您的 .NET 项目中。

因此,您可以 下载 DLL 文件或在 NuGet 包管理器中运行以下命令。

Install-Package Aspose.Imaging

如何使用 C# 减小 PNG 文件的大小

您可以在 此处 看到大量用于压缩图像文件格式的方法和属性。因此,我们将编写步骤和代码片段以编程方式压缩 PNG 文件。

请按照以下步骤操作:

  1. 通过调用 Load 方法加载源 PNG 图像。
  2. 调用 Save 方法将压缩后的图片保存为 PNG 格式。
  3. 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。
  4. IndexedColor 表示每个像素都是调色板索引的颜色类型。
  5. 分配 CompressionLevel 的值来设置最大压缩。
  6. GetCloseImagePalette 方法将从光栅图像中获取调色板(调色图像),以防图像没有调色板。如果调色板存在,它将被使用而不是执行计算。
// 通过调用 Load 方法加载源 PNG 图像 
        using (Image image = Image.Load("image.png"))
        {
        // 调用 Save 方法以 PNG 格式保存压缩图像  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。
                Progressive = true,
            // IndexedColor 表示颜色类型,其中每个像素都是调色板索引 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // 分配 CompressionLevel 的值以设置最大压缩 
                CompressionLevel = 9,
            // GetCloseImagePalette 方法将从光栅图像(调色图像)中获取调色板,以防图像没有调色板。如果调色板存在,它将被用来代替执行计算。 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

图像压缩 API - 高级选项

在上一节中,我们学习了如何使用 C# 减小 PNG 文件的大小。现在,让我们探索一下这个图像压缩 API 的其他一些突出的方法和属性。在本节中,我们将进行自定义 API 调用,以编程方式创建 PNG 文件。

您可以按照下面提到的步骤和代码段进行操作:

  1. 初始化 PngImage 类的实例,该类创建 100x100 像素的 PNG 图像。
  2. LinearGradientBrush 方法封装了具有线性渐变的 Brush。
  3. 使用指定坐标初始化 Point 结构的新实例。
  4. 根据当前程序集中使用的图形引擎实例化表示图形的 Graphics 类的实例。
  5. 使用 FillRectangle 方法用蓝色透明渐变填充图像。
  6. 创建 PngOptions 类的对象。
  7. 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。
  8. 您可以通过初始化 ResolutionSetting 类将水平和垂直分辨率设置为每英寸 96 像素。
  9. 通过为 ColorType 属性赋值来设置颜色类型。
  10. CompressionLevel 属性赋值以设置最大压缩级别。
  11. FilterType 属性设置PNG文件保存过程中使用的过滤器类型。
  12. 通过为 BitDepth 属性分配一个值来设置每个通道的位数。
  13. 调用Save方法保存到文件。

    // 初始化创建 100x100 像素的 PNG 图像的 PngImage 类的实例。 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // LinearGradientBrush 方法封装了一个具有线性渐变的 Brush 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // 使用指定坐标初始化 Point 结构的新实例。 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // 根据当前程序集中使用的图形引擎实例化一个 Graphics 类的实例,该实例表示图形。
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // 使用 FillRectangle 方法用蓝色透明渐变填充图像。 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // 创建 PngOptions 类的对象 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。 
        saveOptions.Progressive = true;

        // 通过初始化 ResolutionSetting 类将水平和垂直分辨率设置为每英寸 96 像素。 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // 通过将值分配给 ColorType 属性来设置颜色的类型。
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // 为 CompressionLevel 属性分配一个值以设置最大压缩级别。 
        saveOptions.CompressionLevel = 9;

        // FilterType 属性设置 png 文件保存过程中使用的过滤器类型。
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // 通过将值分配给 BitDepth 属性来设置每个通道的位数。
        saveOptions.BitDepth = 8;

        // 通过调用 Save 方法保存到文件。 
        pngImage.Save( "output.png", saveOptions);
    }

您可以在下图中看到输出:

图像压缩 API

获得免费许可证

您可以获得 免费临时许可证 来试用 API,而不受评估限制。

加起来

我们可以在这里结束这篇博文。我们希望您已经学会了如何使用 C# 以编程方式减小 PNG 文件的大小。此外,我们还介绍了此图像压缩 API 的其他一些高级方法,其中我们创建了优化的 PNG 文件。但是,您可以访问此 链接 以了解有关 PNG 文件格式的更多方法和属性。最重要的是,不要跳过这个 .NET 库的 文档 来了解生态系统。我们将在以后的博客文章中写下其他有用的主题。因此,请与 conholdate.com 保持联系以获取更新。

问一个问题

您可以在我们的 论坛 上告诉我们您的问题或疑问。

常见问题

如何在 C# 中压缩 PNG 图像?

安装此 .NET 图像压缩 API 以压缩和处理 PNG 文件格式。它提供了压缩其他流行图像文件格式(例如 JPEGTIFF 等)的方法和属性。

如何最小化 PNG 格式的图像文件大小?

这个 method 让您可以使用 C# 以编程方式减小 PNG 文件的大小。此外,您可以根据需要配置 API 调用。

如何在 C# 代码示例中调整 PNG 图像的大小?

按照此 链接 了解以编程方式调整 PNG 图像大小的代码片段。这个 .NET API 功能强大,并提供了广泛的方法和属性。

也可以看看