📅  最后修改于: 2023-12-03 14:39:42.857000             🧑  作者: Mango
在C#中,我们可以使用System.Drawing命名空间中的类来进行图片的编码与解码。其中,JPG格式的图片是被广泛使用的图片格式之一。本篇文章将会介绍如何通过C#编码高品质的JPG图片。
首先,我们需要获取要编码的图片。常见的获取图片的方式有两种:
使用文件路径来获取图片是最常见的方法之一。我们可以使用System.Drawing.Image类的静态方法FromFile来加载图片。代码示例:
using System.Drawing;
// 从文件中读取图片
Image image = Image.FromFile("image.jpg");
另一种获取图片的方式是使用流。我们可以使用System.Drawing.Image类的静态方法FromStream来加载图片。代码示例:
using System.Drawing;
using System.IO;
// 从流中读取图片
using (Stream stream = new FileStream("image.jpg", FileMode.Open))
{
Image image = Image.FromStream(stream);
}
读取图片后,我们可以使用System.Drawing.Image类的Save方法将图片编码为JPG格式的文件。我们可以指定图片的压缩质量来控制生成图片的大小和质量。代码示例:
using System.Drawing;
using System.Drawing.Imaging;
// 从文件中读取图片
Image image = Image.FromFile("image.jpg");
// 设置编码参数
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 90L); // 设置压缩质量为90%
// 获取JPG编码器
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
// 将图片保存为JPG文件
image.Save("encoded.jpg", jpgEncoder, encoderParams);
上述代码中,我们使用EncoderParameters类来指定压缩质量,并使用GetEncoder方法获取JPG编码器。最后,我们使用Image.Save方法将图片保存为JPG文件。
在上面的代码示例中,我们使用了GetEncoder方法来获取JPG编码器。该方法如下所示:
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
该方法会遍历所有可用的编码器,并返回指定格式的编码器。
通过本篇文章的介绍,我们了解了如何在C#中编码高品质的JPG图片。我们可以使用System.Drawing.Image类来获取图片和保存JPG文件,使用EncoderParameters类来指定压缩质量,使用GetEncoder方法来获取JPG编码器。