下面是详细的讲解:
1. 概述
C#图片压缩一般采用的是将原图转换成JPG或PNG格式,然后使用指定的压缩质量或压缩比例进行压缩。下面我将详细讲解C#实现图片压缩的具体步骤以及代码实现。
2. 实现方法
2.1 引用命名空间
我们需要先引用System.Drawing.Imaging和System.IO这两个命名空间,这两个命名空间包括我们需要使用到的类或方法。
using System.Drawing.Imaging;
using System.IO;
2.2 基本压缩方法
我们可以先定义一个方法,名为CompressImage,输入参数为原图路径和压缩后的图路径、压缩质量(或压缩比例),返回值为bool类型,表示是否成功压缩。在该方法中,我们需要使用System.Drawing.Image对象,然后调用Save方法进行保存。
public static bool CompressImage(string srcImagePath, string dstImagePath, long quality)
{
try
{
Image srcImage = Image.FromFile(srcImagePath);
ImageCodecInfo myEncoder = GetEncoder("image/jpeg");
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
srcImage.Save(dstImagePath, myEncoder, encoderParameters);
return true;
}
catch
{
return false;
}
}
private static ImageCodecInfo GetEncoder(string mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i < encoders.Length; i++)
{
if (encoders[i].MimeType == mimeType)
{
return encoders[i];
}
}
return null;
}
参数说明:
- srcImagePath:原图路径。
- dstImagePath:压缩后的图路径。
- quality:压缩质量,取值范围为0~100,100表示最高质量。
2.3 压缩示例
我们可以使用以下代码调用上述方法进行压缩,代码中调用了两次CompressImage方法,分别压缩一张JPG图片和一张PNG图片。
string srcImagePath = @"D:\Pictures\test.jpg";
string dstImagePath = @"D:\Pictures\test_compress.jpg";
long quality = 50;
bool isCompressSuccess = CompressImage(srcImagePath, dstImagePath, quality);
if (isCompressSuccess)
{
Console.WriteLine("jpg compress success!");
}
else
{
Console.WriteLine("jpg compress failed!");
}
srcImagePath = @"D:\Pictures\test.png";
dstImagePath = @"D:\Pictures\test_compress.png";
quality = 50;
isCompressSuccess = CompressImage(srcImagePath, dstImagePath, quality);
if (isCompressSuccess)
{
Console.WriteLine("png compress success!");
}
else
{
Console.WriteLine("png compress failed!");
}
输出结果为:
jpg compress success!
png compress success!
3. 总结
以上就是C#实现图片压缩的方法,压缩方法简单,使用也很方便,可以通过调节quality参数来控制压缩质量,以达到不同的压缩效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#图片压缩的实现方法 - Python技术站