C#实现无损高质量图片压缩代码分享
C#代码实现无损高质量压缩图片 在C#中,处理图像压缩是一个常见的需求,尤其是当我们需要减小图片文件大小而不降低其质量时。以下是一个C#方法,用于实现无损高质量地压缩图片。这个方法使用了.NET Framework中的System.Drawing命名空间,提供了对图像处理的基本支持。 方法名为`GetPicThumbnail`,它接受5个参数: 1. `sFile`:原始图片的路径。 2. `dFile`:压缩后图片保存的位置。 3. `dHeight`:压缩后图片的高度。 4. `dWidth`:压缩后图片的宽度。 5. `flag`:压缩质量设置,范围在1到100之间,数值越小,压缩率越高。 首先,方法通过`System.Drawing.Image.FromFile`加载原始图片,并获取其原始格式`fFormat`。然后,计算出保持原始宽高比的新尺寸`sW`和`sH`。如果原始尺寸超过了设定的最大高度或宽度,方法会根据比例调整尺寸,确保图片不会失真。 接下来,创建一个`Bitmap`对象`ob`,作为压缩后的图片,以及一个`Graphics`对象`g`,用于在`Bitmap`上进行绘制。`g`的`CompositingQuality`属性被设置为`HighQuality`,以保证压缩过程中的图像质量,而`SmoothingMode`被设置为`SmoothingMode.HighQuality`,以提高图像平滑度。 为了实现无损压缩,方法没有直接使用位图的`Save`方法来压缩图片,而是先创建一个与目标尺寸相匹配的空白位图,然后用原始图片的内容填充这个新位图。这样可以避免因直接缩放导致的像素损失。`g.DrawImage`方法用于将源图片绘制到目标位图上,同时可以指定绘制的区域和缩放比例。 最后,`g.Flush()`确保所有绘制操作完成,然后使用`ob.Save`方法将压缩后的图片保存到指定的路径`dFile`,并传入`flag`参数作为JPEG压缩质量。这样,图片在压缩时会根据提供的质量值来调整压缩级别,从而达到无损或接近无损的压缩效果。 总结起来,这个C#代码实例展示了如何利用.NET Framework的图像处理功能进行无损高质量的图片压缩,通过调整图片尺寸和压缩质量,可以在不显著降低画质的情况下减小图片文件的大小。这对于网站、应用程序或者任何需要优化图片存储和传输的场景都十分有用。
![](https://csdnimg.cn/release/download_crawler_static/13995085/bg1.jpg)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)