要实现图片压缩,可以使用c#中的System.Drawing.Imaging命名空间中的Encoder类和EncoderParameter类。下面是具体的步骤:
1. 加载图片
首先,需要使用Image.FromFile()方法来加载原图像。例如,以下代码加载名为“original.jpg”的图像:
Image originalImage = Image.FromFile("original.jpg");
2. 定义图片质量
然后,你需要定义压缩后的图片质量。这可以通过Encoder类中定义的Quality成员来实现。Quality的值的范围是0至100,其中0表示最低质量,100表示最高质量。例如,以下代码将Quality设置为80:
Encoder qualityEncoder = Encoder.Quality;
EncoderParameter qualityParameter = new EncoderParameter(qualityEncoder, 80L);
3. 定义图像编码类型
接下来,需要定义图像编码类型。可以通过ImageCodecInfo类来实现。ImageCodecInfo保存了多种图像编码类型的详细信息,例如MIME类型,文件扩展名等。
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
其中GetEncoderInfo()方法是一个帮助方法,它搜索所有已安装的图像编码器,并返回与指定的MIME类型匹配的编码器信息。以下是GetEncoderInfo()方法的代码示例:
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo encoder in encoders)
{
if (encoder.MimeType == mimeType)
{
return encoder;
}
}
return null;
}
4. 执行压缩
最后,可以使用以下代码执行压缩:
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = qualityParameter;
originalImage.Save("compressed.jpg", jpegCodec, encoderParameters);
这将把品质设置为80的压缩图像保存到名为“compressed.jpg”的文件中。
以下是完整的代码示例,它将把品质设置为80的压缩图像保存到名为“compressed.jpg”的文件中:
Image originalImage = Image.FromFile("original.jpg");
Encoder qualityEncoder = Encoder.Quality;
EncoderParameter qualityParameter = new EncoderParameter(qualityEncoder, 80L);
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = qualityParameter;
originalImage.Save("compressed.jpg", jpegCodec, encoderParameters);
以上就是压缩图片的完整攻略。另外,可以在参数数组encoderParameters的Param属性中存储多个压缩参数,这样可以令压缩的效果更有趣。具体的压缩参数可以参考Microsoft MSDN文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 如何实现图片压缩 - Python技术站