📜  c# encode jpg 高品质 - C# (1)

📅  最后修改于: 2023-12-03 14:39:42.857000             🧑  作者: Mango

C#编码高品质JPG图片

在C#中,我们可以使用System.Drawing命名空间中的类来进行图片的编码与解码。其中,JPG格式的图片是被广泛使用的图片格式之一。本篇文章将会介绍如何通过C#编码高品质的JPG图片。

获取图片

首先,我们需要获取要编码的图片。常见的获取图片的方式有两种:

  1. 使用文件路径

使用文件路径来获取图片是最常见的方法之一。我们可以使用System.Drawing.Image类的静态方法FromFile来加载图片。代码示例:

using System.Drawing;

// 从文件中读取图片
Image image = Image.FromFile("image.jpg");
  1. 使用流

另一种获取图片的方式是使用流。我们可以使用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文件。

获取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编码器。