一、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文件路径)。其主要步骤包括:
- 使用
Image.FromFile
方法读取指定路径的JPG文件,得到一个Image
对象。 - 创建一个新的
Bitmap
对象,使用读取到的Image
作为源。这样做的目的是确保我们能够以目标格式(BMP)保存图像,因为Bitmap
类提供了更丰富的格式控制功能。 - 设置
EncoderParameters
以指定保存时使用无压缩(即保持原始图像质量),这对于BMP格式来说通常是默认行为,这里主要是为了演示如何设置编码参数。 - 通过
ImageCodecInfo.GetImageEncoders()
获取到与BMP格式对应的编码器信息。 - 最后,使用
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,这是一个常用的折衷值,既保证了较好的视觉效果,又能保持相对较小的文件体积。
方法执行的主要步骤如下:
- 使用
Image.FromFile
方法读取指定路径的BMP文件,得到一个Image
对象。 - 创建一个新的
Bitmap
对象,使用读取到的Image
作为源,以便后续以JPG格式保存。 - 设置
EncoderParameters
,指定JPG的压缩质量。 - 通过
ImageCodecInfo.GetImageEncoders()
获取到与JPG格式对应的编码器信息。 - 调用
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-****博客