C#压缩图片不失真
时间: 2023-07-27 08:16:21 浏览: 52
在C#中可以使用System.Drawing命名空间中的Image类来实现图片的压缩。为了避免图片失真,我们可以使用以下的方法:
1. 选择适当的压缩质量,压缩质量越高,图片失真的可能性就越小。可以使用ImageCodecInfo类和Encoder类来设置压缩质量。
2. 选择适当的图片格式,不同的格式对图片的压缩质量和大小都有影响。常用的图片格式有JPEG、PNG、BMP等。
3. 调整图片的尺寸,减小图片的尺寸也可以减小图片的大小。可以使用Image类的Resize方法来调整图片的尺寸。
下面是一个简单的示例代码:
```csharp
using System.Drawing;
using System.Drawing.Imaging;
public static void CompressImage(string sourceFile, string targetFile, int quality)
{
using (var sourceImage = Image.FromFile(sourceFile))
{
var encoderParams = new EncoderParameters(1);
var encoderInfo = GetEncoderInfo(sourceImage.RawFormat);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, quality);
sourceImage.Save(targetFile, encoderInfo, encoderParams);
}
}
private static ImageCodecInfo GetEncoderInfo(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageEncoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
```
在上面的示例中,我们通过调用GetEncoderInfo方法来获取图片编码器的信息,然后使用Encoder类和EncoderParameters类来设置压缩质量,最后调用Image类的Save方法来保存压缩后的图片。