C# JPG与Bitmap互相转换

一、JPG转Bitmap

要实现读取一个JPG文件并将其保存为BMP格式,你可以使用System.Drawing命名空间提供的类,代码如下:

using System.Drawing;
using System.Drawing.Imaging;

//JpgToBmp
public static void ConvertJpgToBmp(string inputFile, string outputFile)
{
    // 读取JPG文件
    using (var originalImage = Image.FromFile(inputFile))
    {
        // 创建一个新的Bitmap对象,以便保存为BMP格式
        using (var bitmap = new Bitmap(originalImage))
        {
            // 设置保存选项以保持原始图像质量(无压缩)
            var encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0);
            // 获取合适的BMP编码器
            var encoder = ImageCodecInfo.GetImageEncoders().First(info => info.FormatID == ImageFormat.Bmp.Guid);
            // 保存为BMP格式
            bitmap.Save(outputFile, encoder, encoderParams);
        }
    }
}

这段代码定义了一个名为 ConvertJpgToBmp 的方法,接受两个参数:inputJpgFilePath(要读取的JPG文件路径)和 outputBmpFilePath(要保存的BMP文件路径)。其主要步骤包括:

  1. 使用 Image.FromFile 方法读取指定路径的JPG文件,得到一个 Image 对象。
  2. 创建一个新的 Bitmap 对象,使用读取到的 Image 作为源。这样做的目的是确保我们能够以目标格式(BMP)保存图像,因为 Bitmap 类提供了更丰富的格式控制功能。
  3. 设置 EncoderParameters 以指定保存时使用无压缩(即保持原始图像质量),这对于BMP格式来说通常是默认行为,这里主要是为了演示如何设置编码参数。
  4. 通过 ImageCodecInfo.GetImageEncoders() 获取到与BMP格式对应的编码器信息。
  5. 最后,使用 Bitmap.Save 方法,传入输出文件路径、选择的编码器以及编码参数,将图像保存为BMP格式。

调用此方法,传入实际的JPG文件路径和期望的BMP文件保存路径,即可完成转换过程。

例如:

ConvertJpgToBmp(@"C:\input.jpg", @"C:\output.bmp");

 

二、Bitmap转JPG

要使用C#读取一个BMP文件并将其保存为JPG格式,同样可以利用System.Drawing命名空间中的类,代码如下:

using System.Drawing;
using System.Drawing.Imaging;

//BmpToJpg
public static void ConvertBmpToJpg(string inputFile, string outputFile, int quality = 80)
{
    // 读取BMP文件
    using (var originalImage = Image.FromFile(inputFile))
    {
        // 创建一个新的Bitmap对象,以便保存为JPG格式
        using (var bitmap = new Bitmap(originalImage))
        {
            // 设置JPEG编码器参数,包括压缩质量(范围0-100,数值越高,质量越好但文件越大)
            var encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
            // 获取合适的JPEG编码器
            var encoder = ImageCodecInfo.GetImageEncoders().First(info => info.FormatID == ImageFormat.Jpeg.Guid);
            // 保存为JPG格式
            bitmap.Save(outputFile, encoder, encoderParams);
        }
    }
}

这段代码定义了一个名为 ConvertBmpToJpg 的方法,它接受三个参数:

  • inputBmpFilePath:要读取的BMP文件路径。
  • outputJpgFilePath:要保存的JPG文件路径。
  • quality(可选):JPG压缩质量,范围为0到100,数值越高代表图像质量越好但文件尺寸越大。默认值为80,这是一个常用的折衷值,既保证了较好的视觉效果,又能保持相对较小的文件体积。

方法执行的主要步骤如下:

  1. 使用 Image.FromFile 方法读取指定路径的BMP文件,得到一个 Image 对象。
  2. 创建一个新的 Bitmap 对象,使用读取到的 Image 作为源,以便后续以JPG格式保存。
  3. 设置 EncoderParameters,指定JPG的压缩质量。
  4. 通过 ImageCodecInfo.GetImageEncoders() 获取到与JPG格式对应的编码器信息。
  5. 调用 Bitmap.Save 方法,传入输出文件路径、选定的编码器以及编码参数,将图像保存为JPG格式。

要使用这个方法进行转换,只需提供相应的输入BMP文件路径和输出JPG文件路径,可选地调整压缩质量参数。

例如:

ConvertBmpToJpg(@"C:\input.bmp", @"C:\output.jpg", quality: 90);

这段代码适用于基于GDI+的Windows Forms或WPF应用程序。对于非GDI+环境或跨平台项目,如ASP.NET Core或.NET Core应用,可能需要使用其他图像处理库,如ImageSharp。

 

三、其他转换 

C# Bitmap转换为jpg、bmp、png、gif图片_c# bitmap转jpg-****博客

C# 从指定路径读取图片源、Bitmap与ImageSource互转、Bitmap与BitmapImage互转、BitmapImage转为byte[]、图片压缩_c# imagesource bitmap-****博客

 

上一篇:爱尔兰启动其首个量子技术国家战略“量子 2030”


下一篇:应对电网挑战!lonQ与橡树岭国家实验室利用量子技术改善关键基础设施-摘要:美国电网正在面临需求增加和能源扩散的挑战,对能够应对优化和安全挑战的创新解决方案有着迫切需求。IonQ 与橡树岭国家实验室开展合作,将为企业利用经典-量子的混合资源开发应用提供帮助。 近日,量子计算行业的领导者 lonQ 宣布,将与橡树岭国家实验室合作,探索如何利用量子技术实现现代化电网。这项由美国能源部资助的研究计划,是 lonQ 对使用量子计算机解决世界上最复杂、最具影响力问题的持续承诺。 橡树岭国家实验室 (ORNL) 成立于 1943 年,是美国能源部系统中规模最大、年度预算第三大的科学与能源国家实验室。此次,橡树岭国家实验室与 lonQ 开启合作,将显著加速电网现代化建设,并以此为契机,应对能源基础设施中的关键挑战,为更具可持续性和弹性的未来铺平道路。 “实现美国电网现代化是当务之急:如果不这样做,将会影响美国人的日常生活和我们的国家安全。”IonQ 首席营收官 Rima Alamedine 说道:“我们相