使用C#压缩PNG、JPEG和TIFF图像的方法

 更新时间:2024年12月10日 09:52:58   作者:坐井观老天  
图像压缩是一种常用的减小图像大小的方法,它可以让您分别最小化存储和传输图像所需的空间和时间,有各种压缩技术可用来压缩图像,而不会降低图像的质量,根据这一点,这篇文章为您提供了一些使用 C# 以编程方式压缩PNG、JPEG和TIFF图像的简单方法

C# 图像压缩 API - 免费下载

Aspose.Imaging for .NET是一款功能强大的图像处理 API,可让您在 .NET 应用程序中处理常见的图像格式。此外,该 API 还允许您对图像应用不同类型的压缩,包括 PNG、JPEG 和 TIFF。要使用该 API,您可以下载其 DLL 或使用NuGet安装它。

Install-Package Aspose.Imaging

在 C# 中压缩 PNG 图像

对于 PNG 图像,您可以将压缩级别设置为 0 到 9,其中 9 是最大压缩,0 是存储模式。以下是使用 Aspose.Imaging for .NET 压缩 PNG 图像的步骤。

  • 使用Image类加载图像。
  • 创建PngOptions类的对象。
  • 使用PngOptions.CompressionLevel属性设置压缩级别。
  • 使用Image.Save(String, PngOptions)方法保存图像。

以下代码示例展示如何使用 C# 压缩 PNG 图像。

// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_PNG();
 
// Load an image from file (or stream)
using (Image image = Image.Load(dataDir + "aspose_logo.png"))
{
    // Loop over possible CompressionLevel range
    for (int i = 0; i <= 9; i++)
    {
        // Create an instance of PngOptions for each resultant PNG, Set CompressionLevel and  Save result on disk
        PngOptions options = new PngOptions();
        options.CompressionLevel = i;
        image.Save(i + "_out.png", options);
    }
}

在 C# 中压缩 JPEG 图像

为了处理 JPEG 图像,Aspose.Imaging for .NET 提供了JpegOptions类,该类为 JPEG 图像提供以下压缩类型。

  • 基线
  • 进步
  • 无损
  • JPEG格式

以下是使用上述压缩类型之一压缩 JPEG 图像的步骤。

  • 使用Image类加载 JPEG 图像。
  • 创建JpegOptions类的对象。
  • 使用JpegOptions.ColorType属性设置颜色模式。
  • 使用JpegOptions.CompressionType属性设置压缩类型。
  • 使用Image.Save(String, JpegOptions)方法保存图像。

以下代码示例展示如何使用 C# 压缩 JPEG 图像。

// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_JPEG();
          
using (var original = Image.Load(dataDir+"ColorGif.gif"))
{
    var jpegOptions = new JpegOptions()
{
    ColorType = JpegCompressionColorMode.Grayscale,
    CompressionType = JpegCompressionMode.Progressive,
          
};
    original.Save("D:/temp/result.jpg", jpegOptions);
}

在 C# 中对 TIFF 图像应用压缩

Aspose.Imaging for .NET 为 TIFF 图像提供了多种压缩类型,包括 LZW、Packbits、CCIT Fax 3 & 4 等。您可以根据需要选择适当的类型。以下是压缩 TIFF 图像的步骤。

Aspose.Imaging for .NET 为 TIFF 图像提供了多种压缩类型,包括 LZW、Packbits、CCIT Fax 3 & 4 等。您可以根据需要选择适当的类型。以下是压缩 TIFF 图像的步骤。

  • 使用Image类加载 TIFF 图像。
  • 创建一个TiffOptions对象并用TiffExpectedFormat.Default枚举值初始化它。
  • 为 Tiff 图像设置BitsPerSample、压缩、光度测定模式和调色板。
  • 使用Image.Save(String, TiffOptions)方法保存图像。

以下代码示例展示如何使用 C# 压缩 TIFF 图像。

// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_ModifyingAndConvertingImages();
 
// Load an image through file path location or stream
Image image = Image.Load(dataDir + "SampleTiff.tiff");
 
// Create an instance of TiffOptions for the resultant image
TiffOptions outputSettings = new TiffOptions(TiffExpectedFormat.Default);
 
// Set BitsPerSample, Compression, Photometric mode and graycale palette
outputSettings.BitsPerSample = new ushort[] { 4 };
outputSettings.Compression = TiffCompressions.Lzw;
outputSettings.Photometric = TiffPhotometrics.Palette;
outputSettings.Palette = ColorPaletteHelper.Create4BitGrayscale(false);
image.Save(dataDir + "SampleTiff_out.tiff", outputSettings);

结论

在本文中,您学习了如何使用 C# 压缩 PNG、JPEG 和 TIFF 图像。还列出了 JPEG 和 TIFF 图像支持的各种压缩技术。您可以使用文档了解有关 .NET 图像处理 API 的更多信息。

以上就是使用C#压缩PNG、JPEG和TIFF图像的方法的详细内容,更多关于C#压缩PNG、JPEG和TIFF的资料请关注脚本之家其它相关文章!

相关文章

  • 使用C#代码在Word文档中插入列表的操作方法

    使用C#代码在Word文档中插入列表的操作方法

    列表在 Word 文档中用于概述、排列和强调文本,使用户能够轻松扫描和理解一系列项目,在本文中,您将学习如何使用 Spire.Doc for .NET 在 C# 和 VB.NET 中将这些类型的列表插入到 Word 文档中,需要的朋友可以参考下
    2025-11-11
  • Stream.Write 与 StreamWriter.Write 的不同

    Stream.Write 与 StreamWriter.Write 的不同

    Stream.Write 与 StreamWriter.Write 是我们在向流中写数据时,最常用的方法。下面就详细讲解这两个方法。
    2013-04-04
  • C# WPF中实现图表生成的五种方式

    C# WPF中实现图表生成的五种方式

    在现代应用程序中,数据可视化是一个重要的功能,它可以帮助用户更直观地理解数据,在C# WPF中,有多种方式可以生成图表,以下是五种常见的方法,每种方法都有其独特的优势和局限,感兴趣的小伙伴跟着小编一起来看看吧
    2024-09-09
  • c#异常处理示例分享

    c#异常处理示例分享

    这篇文章主要介绍了c#异常处理示例,需要的朋友可以参考下
    2014-04-04
  • C#实现较为实用的SQLhelper

    C#实现较为实用的SQLhelper

    这篇文章主要为大家详细介绍了C#实现较为实用SQLhelper的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • C#信号量用法简单示例

    C#信号量用法简单示例

    这篇文章主要介绍了C#信号量用法,结合简单C#控制台应用程序形式分析了信号量的功能、定义、调用、释放等操作技巧,需要的朋友可以参考下
    2016-07-07
  • 浅析c# 线程同步

    浅析c# 线程同步

    这篇文章主要介绍了c# 线程同步的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-08-08
  • 利用C#实现网络爬虫

    利用C#实现网络爬虫

    这篇文章主要介绍了利用C#实现网络爬虫,完整的介绍了C#实现网络爬虫详细过程,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • C#数组学习相关资料整理

    C#数组学习相关资料整理

    最近开始学习c#,并有幸接触到了数组方便的操作,感觉确实不错,这里简单的整理下c#相关的学习资料,方便大家学习
    2012-09-09
  • 在C#中使用适配器Adapter模式和扩展方法解决面向对象设计问题记录

    在C#中使用适配器Adapter模式和扩展方法解决面向对象设计问题记录

    在开发基于MonoGame的游戏框架时,面临SpriteFont和DynamicSpriteFont兼容问题,SpriteFont在内容管道中编译确定字号,导致不同字号需加载多个字体资源,本文给大家介绍在C#中使用适配器Adapter模式和扩展方法解决面向对象设计问题,感兴趣的朋友一起看看吧
    2024-10-10

最新评论