一文讀懂 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(