支持格式:BMP、GIF、JPEG、EXIF、PNG、TIFF、ICON、WMF、EMF等,几乎涵盖所有常用格式

图像类:

  1. Image类:Bitmap和Metafile的类提供功能的抽象基类。
  2. Metafile类:定义图形图元文件,图元文件包含描述一系列图形操作的记录,这些操作可以被记录(构造)和被回放(显示)
  3. Bitmap类:封装GDI+位图,此位图由图形图像及其属性的像素数据组成,Bitmap是用于处理由像素数据定义的图像的对象。

常用属性以及方法:

名称

说明

公共属性

Height

获取此Image对象的高度。

RawFormat

获取此Image对象的格式。

Size

获取此Image对象的宽度和高度。

Width

获取此Image对象的宽度。

公共方法

GetPixel

获取此Bitmap中指定像素的颜色。

MakeTransparent

使默认的透明颜色对此Bitmap透明。

RotateFlip

旋转、翻转或者同事旋转和翻转Image对象。

Save

将Image对象以指定的格式保存到指定的Stream对象。

SetPixel

设置Bitmap对象中指定像素的颜色。

SetPropertyItem

将指定的属性项设置为指定的值。

SetResolution

设置此Bitmap的分辨率。

构造BitMap实例:

public Bitmap(Image );  //从现有图像创建,其中可换成等效参数

public Bitmap(int, int);

public Bitmap(Image, bool );//bool:颜色校正标志位

public Bitmap(Type , string );//type提取资源的类, string 资源名

public Bitmap(int , int , PixelFormat );// PixelFormat像素格式 枚举

public Bitmap(int , int , Graphics);// Graphics设置分辨率

public Bitmap(int , int , int stride, PixelFormat , IntPtr );//stride 指定相邻扫描行开始处之间字节偏移量的整数。传递给此参数的值必须为4 的倍数。IntPtr指向包含像素数据的字节数组的指针。

PixelFormat枚举:

名称

说明

DontCare = 0

没有指定像素格式

Undefined = 0

未定义像素格式

Max = 15

此枚举的最大值

Indexed = 65536

该像素数据包含颜色索引值,这意味着这些值是系统颜色表中颜色的索引,而不是单个颜色值。

Gdi = 131072

像素数据包含 GDI 颜色

Format16bppRgb555 = 135173

指定格式为每像素 16 位;红色、绿色和蓝色分量各使用 5 位。剩余的 1 位未使用

Format16bppRgb565 = 135174

指定格式为每像素 16 位;红色分量使用 5 位,绿色分量使用 6 位,蓝色分量使用 5 位

Format24bppRgb = 137224

指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位

Format32bppRgb = 139273

指定格式为每像素 32 位;红色、绿色和蓝色分量各使用 8 位。剩余的 8 位未使用

Format1bppIndexed = 196865

指定像素格式为每像素 1 位,并指定它使用索引颜色。因此颜色表中有两种颜色

Format4bppIndexed = 197634

指定格式为每像素 4 位而且已创建索引

Format8bppIndexed = 198659

指定格式为每像素 8 位而且已创建索引。因此颜色表中有 256 种颜色

Alpha = 262144

像素数据包含没有进行过自左乘的 alpha 值

Format16bppArgb1555 = 397319

像素格式为每像素 16 位。该颜色信息指定 32,768 种色调,其中 5 位为红色,5 位为绿色,5 位为蓝色,1 位为 alpha

PAlpha = 524288

像素格式包含自左乘的 alpha 值

Format32bppPArgb = 925707

指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘

Extended = 1048576

保留

Format16bppGrayScale = 1052676

像素格式为每像素 16 位。该颜色信息指定 65536 种灰色调

Format48bppRgb = 1060876

指定格式为每像素 48 位;红色、绿色和蓝色分量各使用 16 位

Format64bppPArgb = 1851406

指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位。根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘

Canonical = 2097152

默认像素格式,每像素 32 位。此格式指定 24 位颜色深度和一个 8 位 alpha 通道

Format32bppArgb = 2498570

指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位

Format64bppArgb = 3424269

指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位

图像的输入:

  1. 窗体设计时,在属性对话框里面的Image属性设置
  2. 程序中对话框输入

程序中对话框输入:(示例)

打开对话框:

OpenFileDialog ofdlg = newOpenFileDialog();

            ofdlg.Filter = "BMP File(*.bmp)|*.bmp";

if (ofdlg.ShowDialog() == DialogResult.OK)

            {

Bitmap image = newBitmap(ofdlg.FileName);

            }

保存对话框:

string str;

Bitmap box1 = newBitmap(pictureBox1.Image);

SaveFileDialog sfdlg = newSaveFileDialog();

            sfdlg.Filter = "bmp文件(*.BMP)|*.BMP|All File(*.*)|*.*";

            sfdlg.ShowDialog();

            str = sfdlg.FileName;

            box1.Save(str);

关于OpenFileDialog与SaveFileDialog的用法,可参考msdn相关章节。

图像格式的转换:

Bitmap对象的Save方法中的第二个参数指定了图像保存的格式。修改这个参数可对图像格式进行转换。

位图支持的格式:Imaging.ImageFormat

名称

说明

Bmp

获取位图图像格式(BMP)。

Emf

获取增强型Windows图元文件图像格式(EMF)。

Exif

获取可交换图像文件(Exif)格式。

Gif

获取图形交换格式(GIF)图像格式。

Guid

获取表示此ImageForma 对象的Guid结构。

Icon

获取Windows图标图像格式。

Jpeg

获取联合图像专家组(JPEG)图像格式。

MemoryBmp

获取内存位图图像格式。

Png

获取W3C可移植网络图形(PNG)图像格式。

Tiff

获取标签图像文件格式(TIFF)图像格式。

Wmf

获取Windows图元文件(WMF)图像格式。

图像的拷贝与粘贴Clipboard:

常用方法:

名称

说明

Clear

从剪贴板中移除所有数据。

ContainsData

指示剪贴板中是否存在指定格式的数据,或可转换成此格式的数据。

ContainsImage

指示剪贴板中是否存在 Bitmap 格式或可转换成此格式的数据。

ContainsText

已重载。指示剪贴板中是否存在文本数据。

GetData

从剪贴板中检索指定格式的数据。

GetDataObject

检索当前位于系统剪贴板中的数据。

GetFileDropList

从剪贴板中检索文件名的集合。

GetImage

检索剪贴板上的图像。

GetText

已重载。从剪贴板中检索文本数据。

SetAudio

已重载。将WaveAudio格式的数据添加到剪贴板中。

SetData

将指定格式的数据添加到剪贴板中。

SetDataObject

已重载。将数据置于系统剪贴板中。

SetImage

将Bitmap格式的Image添加到剪贴板中。

SetText

已重载。将文本数据添加到剪贴板中。

步骤:将数据置于剪贴板中。从剪贴板中检索  数据。

  1. 将数据置于剪贴板中

可以通过SetDataObject方法将数据置于剪贴板中,SetDataObject方法有以下三种形式的定义:

publicstaticvoid SetDataObject(object);  

publicstaticvoid SetDataObject(object, bool );//bool 程序退出时,是否保留在剪贴板中

publicstaticvoid SetDataObject(object, bool , int , int);//尝试次数及两次尝试之间的毫秒数

  1. 从剪贴板中检索数据

publicstaticIDataObject GetDataObject();

图像的颜色处理:

调整分辨率:所谓分辨率就是指画面的解析度,由多少像素构成,数值越大,图像也就越清晰。

算法说明:将n*n分辨率的图像变换为m*m分辨率方法是将源图像分成n/m*n/m的子图像块,然后将该n/m*n/m子图像块的所有像素的颜色按F(i,j)的颜色值进行设定,达到降低分辨率的目的。

调整色彩:

灰化:算法说明:将彩色图像像素的颜色值分解为三基色R、G、B,求其和的平均值,然后使用SetPixel方法以该平均值参数生成图像。

灰度图像处理:根据特定的输入输出灰度转换关系,增强了图像灰度,处理后图像的中等灰度值增大,图像变亮。

颜色名

R值

G值

B值

255

0

0

0

0

255

绿

0

255

0

255

255

255

255

255

0

0

0

0

0

255

255

品红

255

0

255

颜色表:(RGB)

C#GDI+图像处理的更多相关文章

  1. C#GDI+编程基础(一:Graphics画布类)

    GDI+存在的意义:将变成与具体硬件实现细节分开. GDI+步骤:获取画布,绘制图像.处理图像 命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using ...

  2. GDI+基础(1)

    转载:http://www.cnblogs.com/peterzb/archive/2009/07/19/1526555.html System.Drawing 命名空间提供了对 GDI+ 基本图形功 ...

  3. WinForm GDI编程:Graphics画布类

    命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using System.Drawing.Drawing2D;//提供高级的二维和矢量图像功能 using ...

  4. Winform GDI+

    什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...

  5. .NET Framework 类库

    .NET Framework 类库 MSDN == V2.0 == .NET Framework 类库是一个由 Microsoft .NET Framework SDK 中包含的类.接口和值类型组成的 ...

  6. .Net框架与框架类库-转

    http://blog.csdn.net/rrrfff/article/details/6686493 .NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework类 ...

  7. Web开发.net framework 类库中必须掌握的命名空间(或者类)【转】

    Web开发常用命名空间和类. System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...

  8. ASP.Net各个命名空间及作用

    (引用自hungerw的博客) 命名空间 描述 Microsoft.CSharp        支持C#语言编译和生成代码 System                            包含了基 ...

  9. .net framework 类库中必须掌握的命名空间(或者类)

    Web开发常用命名空间和类. System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...

随机推荐

  1. 零散的JavaScript公用方法

    function stopBubble(e) { if (e && e.stopPropagation) {//如果传入了事件对象,那么就是非IE浏览器 e.stopPropagati ...

  2. BZOJ1180: [CROATIAN2009]OTOCI

    传送门 一遍AC,开心! $Link-Cut-Tree$最后一题 //BZOJ 1180 //by Cydiater //2016.9.18 #include <iostream> #in ...

  3. CDN网络(一)之典型的CND架构与HTTP协议的缓存控制

    前言 本人以前在CDN厂商蓝汛就职过一年时间,利用脑子里还残留的一些CDN知识,结合现有的书籍材料,写点东西. what's the CDN CDN(content delivery Network) ...

  4. UVA11624Fire!(BFS)

    题目链接 题意:帮助joe走出一个大火蔓延的迷宫,其中joe每分钟可往上下左右四个方向之一走,所有着火的格子都会蔓延(空格与着火格有公共边,下一分钟这个空格也会着火).迷宫中有一些障碍格,joe和火都 ...

  5. 添加JavaScrip

    本章内容: 加载外部脚本:添加嵌入脚本:JavaScrip事件 1,脚本类型:外部文件(使用纯文本格式)加载的脚本:嵌入在页面中的脚本. 加载外部脚本的方法 <body><scrip ...

  6. PHP 弹出文件下载

    /** * @author default7<default7@zbphp.com> * @description 演示PHP弹出下载的原理 * * @param $file_name * ...

  7. PyCharm 教程(五)断点 调试

    PyCharm 教程(五)断点 调试 PyCharm 作为IDE,断点调试是必须有的功能.否则,我们还真不如用纯编辑器写的快. [运行]和[调试]前的设置,详见前面的文章,helloword. 1,设 ...

  8. C++中const 的各种用法

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...

  9. Nginx IP访问控制,只允许指定的IP地址访问

    Nginx可以进行IP访问控制,配置指定的IP地址访问服务器网站 今天领导提出一个新的业务需求,网站上线时让外部用户在上线时间段访问到的页面是维护页面,公司内部员工在上线时段可用正常访问公司的网站. ...

  10. Kindeditor 代码审计

    <?php /** * KindEditor PHP * * 本PHP程序是演示程序,建议不要直接在实际项目中使用. * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置. * */ r ...