在这个现代技术时代,系统存储是一个关键主题。数据量每天都在增加,数据文件的可视化表示已经获得了很大的普及。然而,有很多方法可以压缩图像文件格式,但不应影响图像质量。因此,我们将使用这个 .NET 图像压缩 API 来压缩 PNG 图像。在这篇博文中,我们将学习如何使用 C# 以编程方式减小 PNG 文件大小。
我们将在本文中介绍以下几点:
图片压缩API安装
该库提供了广泛的方法和属性来操作和处理各种图像文件格式,例如 JPEG、TIFF 等。有两种方法可以将此 API 安装到您的 .NET 项目中。
因此,您可以 下载 DLL 文件或在 NuGet 包管理器中运行以下命令。
Install-Package Aspose.Imaging
如何使用 C# 减小 PNG 文件的大小
您可以在 此处 看到大量用于压缩图像文件格式的方法和属性。因此,我们将编写步骤和代码片段以编程方式压缩 PNG 文件。
请按照以下步骤操作:
- 通过调用 Load 方法加载源 PNG 图像。
- 调用 Save 方法将压缩后的图片保存为 PNG 格式。
- 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。
- IndexedColor 表示每个像素都是调色板索引的颜色类型。
- 分配 CompressionLevel 的值来设置最大压缩。
- 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 文件。
您可以按照下面提到的步骤和代码段进行操作:
- 初始化 PngImage 类的实例,该类创建 100x100 像素的 PNG 图像。
- LinearGradientBrush 方法封装了具有线性渐变的 Brush。
- 使用指定坐标初始化 Point 结构的新实例。
- 根据当前程序集中使用的图形引擎实例化表示图形的 Graphics 类的实例。
- 使用 FillRectangle 方法用蓝色透明渐变填充图像。
- 创建 PngOptions 类的对象。
- 设置 Progressive 属性的值,指示此 PngOptions 是否是渐进的。
- 您可以通过初始化 ResolutionSetting 类将水平和垂直分辨率设置为每英寸 96 像素。
- 通过为 ColorType 属性赋值来设置颜色类型。
- 为 CompressionLevel 属性赋值以设置最大压缩级别。
- FilterType 属性设置PNG文件保存过程中使用的过滤器类型。
- 通过为 BitDepth 属性分配一个值来设置每个通道的位数。
- 调用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,而不受评估限制。
加起来
我们可以在这里结束这篇博文。我们希望您已经学会了如何使用 C# 以编程方式减小 PNG 文件的大小。此外,我们还介绍了此图像压缩 API 的其他一些高级方法,其中我们创建了优化的 PNG 文件。但是,您可以访问此 链接 以了解有关 PNG 文件格式的更多方法和属性。最重要的是,不要跳过这个 .NET 库的 文档 来了解生态系统。我们将在以后的博客文章中写下其他有用的主题。因此,请与 conholdate.com 保持联系以获取更新。
问一个问题
您可以在我们的 论坛 上告诉我们您的问题或疑问。
常见问题
如何在 C# 中压缩 PNG 图像?
安装此 .NET 图像压缩 API 以压缩和处理 PNG 文件格式。它提供了压缩其他流行图像文件格式(例如 JPEG、TIFF 等)的方法和属性。
如何最小化 PNG 格式的图像文件大小?
这个 method 让您可以使用 C# 以编程方式减小 PNG 文件的大小。此外,您可以根据需要配置 API 调用。
如何在 C# 代码示例中调整 PNG 图像的大小?
按照此 链接 了解以编程方式调整 PNG 图像大小的代码片段。这个 .NET API 功能强大,并提供了广泛的方法和属性。