C# 快速无损压缩图片代码
时间: 2023-07-16 18:13:27 浏览: 75
以下是使用 C# 快速无损压缩图片的示例代码:
```csharp
using System.Drawing;
using System.Drawing.Imaging;
public static void CompressImage(string imagePath, long quality)
{
using (var image = Image.FromFile(imagePath))
{
var encoderParameters = new EncoderParameters(1);
var encoderParameter = new EncoderParameter(Encoder.Quality, quality);
encoderParameters.Param[0] = encoderParameter;
var codec = GetEncoder(image.RawFormat);
var compressedImagePath = Path.Combine(Path.GetDirectoryName(imagePath), $"compressed_{Path.GetFileName(imagePath)}");
image.Save(compressedImagePath, codec, encoderParameters);
}
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageDecoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
```
在上面的代码中,我们通过 `GetEncoder` 方法获取了指定格式的编码器。然后使用 `Image.FromFile` 方法加载图片,创建 `EncoderParameters` 对象并设置 `Quality` 参数,最后通过 `Image.Save` 方法将图片保存到指定路径下。你可以调整 `quality` 参数来控制压缩后的图片质量,值越小代表压缩比例越高,图片质量越低。