添加链接
注册
登录
link管理
链接快照平台
输入网页链接,自动生成快照
标签化管理网页链接
相关文章推荐
玩足球的稀饭
·
2024年全国硕士研究生招生考试 ...
·
2 月前
·
发呆的皮带
·
戦乙女スヴィア:绚烂的战斗之花,舞动的勇气之 ...
·
7 月前
·
骑白马的薯片
·
Grace & Grit - Mount ...
·
1 年前
·
玩足球的铁板烧
·
Servlet Exception and ...
·
1 年前
·
兴奋的消防车
·
这个王妃有点皮漫画|官方在线漫画全集-快看漫画
·
1 年前
·
link管理
›
使用 C# 减小 PNG 文件的大小
调色板
图形文件格式
png压缩
png
https://blog.conholdate.com/zh/total/how-to-reduce-png-file-size-using-csharp/
打酱油的山寨机
4 月前
中文
English
日本
한국인
Español
Deutsch
Русский
Français
Italiano
Português
Dutch
Tiếng Việt
Thai
bahasa Indonesia
عربي
Türkçe
Polish
</noscript> <span class="logo-switches"><button id="theme-toggle" accesskey="t" title="(Alt + T)"><svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg><svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></span></div><ul id="menu"><li><a href="https://blog.conholdate.com/zh/search/" title="搜索 (Alt +/)" accesskey="/"><span>搜索</span></a></li><li><a href="https://blog.conholdate.com/zh/categories/" title="类别"><span>类别</span></a></li><li><a href="https://blog.conholdate.com/zh/archives/" title="档案"><span>档案</span></a></li><li><a href="https://blog.conholdate.com/zh/tags/" title="标签"><span>标签</span></a></li></ul></nav></header><main class="main"><article class="post-single"><header class="post-header"><div class="breadcrumbs"><a href="https://blog.conholdate.com/zh/">主页</a> » <a href="https://blog.conholdate.com/zh/conholdate.total/">Conholdate.Totals</a></div><h1 class="post-title">如何使用 C# 减小 PNG 文件的大小</h1><div class="post-meta"><time datetime="2022-07-08T07:56:46+00:00">July 8, 2022</time> · 穆罕默德·穆斯塔法 · 2 分钟</div></header><div class="post-content"><figure class="align-center"><img loading="lazy" src="images/How-to-Reduce-PNG-file-size-using-Csharp.png#center" alt="使用 C# 减小 PNG 文件的大小"/><figcaption><p>使用 C# 减小 PNG 文件的大小</p></figcaption></figure><p>在这个现代技术时代,系统存储是一个关键主题。数据量每天都在增加,数据文件的可视化表示已经获得了很大的普及。然而,有很多方法可以压缩图像文件格式,但不应影响图像质量。因此,我们将使用这个 <a href="https://products.aspose.com/imaging/net/">.NET 图像压缩 API</a> 来压缩 PNG 图像。在这篇博文中,我们将学习如何使用 C# 以编程方式减小 <a href="https://docs.fileformat.com/image/png/">PNG</a> 文件大小。</p><p>我们将在本文中介绍以下几点:</p><ul><li><a href="#Image-compression-API-installation">图片压缩API安装</a></li><li><a href="#How-to-Reduce-PNG-file-size-using-Csharp">如何使用 C# 减小 PNG 文件的大小</a></li><li><a href="#Image-compression-API---advance-options">图像压缩 API - 高级选项</a></li></ul><h2 id="Image-compression-API-installation">图片压缩API安装<a hidden="" class="anchor" aria-hidden="true" href="#Image-compression-API-installation">#</a></h2><p>该库提供了广泛的方法和属性来操作和处理各种图像文件格式,例如 <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a>、<a href="https://docs.fileformat.com/image/tiff/">TIFF</a> 等。有两种方法可以将此 API 安装到您的 .NET 项目中。</p><p>因此,您可以 <a href="https://releases.aspose.com/cells/net//">下载</a> DLL 文件或在 <a href="https://www.nuget.org/packages/Aspose.Cells/">NuGet</a> 包管理器中运行以下命令。</p><pre tabindex="0"><code>Install-Package Aspose.Imaging </code></pre><h2 id="How-to-Reduce-PNG-file-size-using-Csharp">如何使用 C# 减小 PNG 文件的大小<a hidden="" class="anchor" aria-hidden="true" href="#How-to-Reduce-PNG-file-size-using-Csharp">#</a></h2><p>您可以在 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/image/">此处</a> 看到大量用于压缩图像文件格式的方法和属性。因此,我们将编写步骤和代码片段以编程方式压缩 PNG 文件。</p><p>请按照以下步骤操作:</p><ol><li>通过调用 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/image/load/">Load</a> 方法加载源 PNG 图像。</li><li>调用 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/image/save/#save_3">Save</a> 方法将压缩后的图片保存为 PNG 格式。</li><li>设置 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/progressive/">Progressive</a> 属性的值,指示此 PngOptions 是否是渐进的。</li><li><a href="https://reference.aspose.com/imaging/net/aspose.imaging.fileformats.png/pngcolortype/">IndexedColor</a> 表示每个像素都是调色板索引的颜色类型。</li><li>分配 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/compressionlevel/">CompressionLevel</a> 的值来设置最大压缩。</li><li><a href="https://reference.aspose.com/imaging/net/aspose.imaging/colorpalettehelper/getcloseimagepalette/">GetCloseImagePalette</a> 方法将从光栅图像中获取调色板(调色图像),以防图像没有调色板。如果调色板存在,它将被使用而不是执行计算。</li></ol><pre tabindex="0"><code>// 通过调用 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) </code></pre><h2 id="Image-compression-API---advance-options">图像压缩 API - 高级选项<a hidden="" class="anchor" aria-hidden="true" href="#Image-compression-API---advance-options">#</a></h2><p>在上一节中,我们学习了如何使用 C# 减小 PNG 文件的大小。现在,让我们探索一下这个图像压缩 API 的其他一些突出的方法和属性。在本节中,我们将进行自定义 API 调用,以编程方式创建 PNG 文件。</p><p>您可以按照下面提到的步骤和代码段进行操作:</p><ol><li>初始化 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.fileformats.png/pngimage/">PngImage</a> 类的实例,该类创建 100x100 像素的 PNG 图像。</li><li><a href="https://reference.aspose.com/imaging/net/aspose.imaging.brushes/lineargradientbrush/">LinearGradientBrush</a> 方法封装了具有线性渐变的 Brush。</li><li>使用指定坐标初始化 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/point/point/">Point</a> 结构的新实例。</li><li>根据当前程序集中使用的图形引擎实例化表示图形的 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/graphics/graphics/">Graphics</a> 类的实例。</li><li>使用 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/graphics/fillrectangle/">FillRectangle</a> 方法用蓝色透明渐变填充图像。</li><li>创建 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/">PngOptions</a> 类的对象。</li><li>设置 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/progressive/">Progressive</a> 属性的值,指示此 PngOptions 是否是渐进的。</li><li>您可以通过初始化 <a href="https://reference.aspose.com/imaging/net/aspose.imaging/imageoptionsbase/resolutionsettings/">ResolutionSetting</a> 类将水平和垂直分辨率设置为每英寸 96 像素。</li><li>通过为 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/colortype/">ColorType</a> 属性赋值来设置颜色类型。</li><li>为 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/compressionlevel/">CompressionLevel</a> 属性赋值以设置最大压缩级别。</li><li><a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/filtertype/">FilterType</a> 属性设置PNG文件保存过程中使用的过滤器类型。</li><li>通过为 <a href="https://reference.aspose.com/imaging/net/aspose.imaging.imageoptions/pngoptions/bitdepth/">BitDepth</a> 属性分配一个值来设置每个通道的位数。</li><li>调用<a href="https://reference.aspose.com/imaging/net/aspose.imaging/image/save/#save_3">Save</a>方法保存到文件。</li></ol><pre tabindex="0"><code> // 初始化创建 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;
推荐文章
玩足球的稀饭
·
2024年全国硕士研究生招生考试 西安建筑科技大学考点(6134)网上确认工作通知-西安建筑科技大学研究生招生信息网,西建大研究生招生,西建大研招
2 月前
发呆的皮带
·
戦乙女スヴィア:绚烂的战斗之花,舞动的勇气之翼_哔哩哔哩_bilibili
7 月前
骑白马的薯片
·
Grace & Grit - Mount Pleasant, SC
1 年前
玩足球的铁板烧
·
Servlet Exception and Error Handling Example Tutorial | DigitalOcean
1 年前
兴奋的消防车
·
这个王妃有点皮漫画|官方在线漫画全集-快看漫画
1 年前