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会严重失真
参考文献
- https://blog.youkuaiyun.com/qq_20161893/article/details/78478125
- https://blog.youkuaiyun.com/yingzhaom/article/details/7743429
- https://www.cnblogs.com/rainbow70626/p/5774841.html