C#的Bitmap

Bitmap 是用于处理由像素数据定义的图像的对象。


一 继承层次结构

System.Object 
   System.MarshalByRefObject
     System.Drawing.Image
       System.Drawing.Bitmap

二 介绍

Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.
因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:

1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色.

2. PixelFormat属性:返回图像的像素格式.

3. Palette属性:获取和设置图像所使用的颜色调色板.

4. Height Width属性:返回图像的高度和宽度.

5. LockBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素.在基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法可以使我们指定像素的范围来控制位图的任意一部分,从而消除了通过循环对位图的像素逐个进行处理,每调用LockBits之后都应该调用一次UnlockBits.

常用API

打开

Bitmap bp =  new Bitmap(filepath);

显示

保存

showBitmap.Save(saveFileDialog.FileName,format );
Save.(string ,ImageCodeInfo,EncoderParameters) 

使用方法:
参数:

filename 类型:System.String 字符串,包含要将此 Image 保存到的文件的名称。

encoder 类型:System.Drawing.Imaging.ImageCodecInfo 此 Image 的 ImageCodecInfo。

encoderParams 类型:System.Drawing.Imaging.EncoderParameters 用于该 Image 的 EncoderParameters。


ImageCodecInfo myImageCodecInfo;
//获得JPEG格式的编码器
myImageCodecInfo = GetEncoderInfo("image/jpeg");

常用方法

Bitmap转Byte

public static byte[] Bitmap2Byte(Bitmap bitmap)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                bitmap.Save(stream , ImageFormat.Jpeg);
                byte[] data = new byte[stream.Length];
                stream.Seek(0 , SeekOrigin.Begin);
                stream.Read(data ,0  , Convert.ToInt32(stream.Length));
                return data;
            }
        }

注意:

在c#中默认可以讲bitmap保存为gif等格式,但是这种保存方法保存的gif会严重失真