一文读懂 C# 中的 Bitmap
一文读懂 C# 中的 Bitmap
- 一、Bitmap 到底是什么?
- 二、推荐使用场景
- 三、实战 Demo
-
- 基础用法:加载、创建和保存
- 进阶用法
-
- 缩放图片
- 裁剪图片
- 颜色调整(反色处理)
- 四、核心方法和属性说明
-
- 常用函数
- 常用属性
- 五、避坑指南、注意事项
- 六、总结与决策
一文读懂 C# 中的 Bitmap
在 C# 的图像处理世界里,Bitmap 类无疑是一个绕不开的核心角色。无论是开发图片编辑工具、处理摄像头采集的帧数据,还是生成动态二维码,都能看到它的身影
一、Bitmap 到底是什么?
- Bitmap 是 System.Drawing 命名空间下的一个类,本质上是对 Windows GDI + 位图的封装,主要用于存储和处理图像数据
- 核心作用:
- 图像的加载:从文件、内存等多种来源读取图像数据
- 图像创建:按需生成全新图像(空白图像、带初始内容图像)
- 图像的编辑:裁剪、缩放、颜色调整等常见图像处理操作
- 图像保存:可以保存为多种图像格式
- 特点鲜明:
- 功能丰富:具备大量的方法和属性
- 集成GDI + :借助 GDI + 强大绘图能力
- 格式兼容广:支持 BMP、JPEG、PNG 等常见格式
二、推荐使用场景
Bitmap 类虽然强大,但并非所有场景都适用。以下这些场景尤其适合它发挥优势:
- 本地图片处理工具:如批量加水印、调整尺寸的小工具
- 摄像头帧数据处理:从摄像头获取的帧数据可以转为 Bitmap 进行后续处理
- 图像格式转换:PNG、JPG、BMP 等格式间转换时
- 简单的图像编辑功能:裁剪头像、生成验证码图片等
- 报表或文档中的图像生成:动态生成带数据的图表并嵌入文档
需要注意的是,在 Web 应用(如ASP.NET)中使用时要谨慎,因为它依赖 GDI+,可能存在性能或兼容性问题,此时更推荐使用专门的图像处理库
三、实战 Demo
基础用法:加载、创建和保存
using System;
using System.Drawing;
using System.Drawing.Imaging;
class BitmapBasicDemo
{static void Main(){string sourcePath = @"C:\images\source.jpg";string createdPath = @"C:\images\created.bmp";try{// 1. 加载已有图片(从文件加载)// 使用using语句自动释放资源,避免内存泄漏using (Bitmap loadedBmp = new Bitmap(sourcePath)){Console.WriteLine($"加载的图片尺寸:{loadedBmp.Width}x{loadedBmp.Height}");}// 2. 创建新图片(在内存中创建一个200x200的位图)// 参数:宽度、高度、像素格式(这里用32位ARGB,支持透明通道)using (Bitmap createdBmp = new Bitmap(200, 200, PixelFormat.Format32bppArgb)){// 可以对创建的图片做些简单处理,比如填充背景色using (Graphics g = Graphics.FromImage(createdBmp)){g.Clear(Color.White); // 填充白色背景}// 3.保存图片createdBmp.Save(createdPath);Console.WriteLine("新图片创建并保存成功");}}catch (Exception ex){Console.WriteLine(