一文读懂 C# 中的 Bitmap

发布于:2025-08-08 ⋅ 阅读:(13) ⋅ 点赞:(0)


一文读懂 C# 中的 Bitmap
在 C# 的图像处理世界里,Bitmap 类无疑是一个绕不开的核心角色。无论是开发图片编辑工具、处理摄像头采集的帧数据,还是生成动态二维码,都能看到它的身影

一、Bitmap 到底是什么?

  1. Bitmap 是 System.Drawing 命名空间下的一个类,本质上是对 Windows GDI + 位图的封装,主要用于存储和处理图像数据
  2. 核心作用
  • 图像的加载:从文件、内存等多种来源读取图像数据
  • 图像创建:按需生成全新图像(空白图像、带初始内容图像)
  • 图像的编辑:裁剪、缩放、颜色调整等常见图像处理操作
  • 图像保存:可以保存为多种图像格式
  1. 特点鲜明
  • 功能丰富:具备大量的方法和属性
  • 集成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(

网站公告

今日签到

点亮在社区的每一天
去签到