摘要:
在.NET编程中,由于GDI+的出现,使得对于图像的处理功能大大增强。在本节介绍如何在.NET中显示图像、如何对图像进行旋转和剪切等物理变换,并且我们将实现一个简易的图像处理程序。
注:本系列节选于MSDN Webcasts上邵志东老师的《 .NET Windows编程系列课程》,在我的Blog中整理发表,方便大家一同参考!此系列相关资料请到这里下载。
本节主要内容:
GDI+中的图像处理
图像物理变换
坐标系和变换
一、GDI+中的图像处理
GDI+中对图像处理提供了以下支持:
支持BMP、GIF、JPEG、PNG、TIFF、ICON等等广泛格式的图像文件。
提供了用于多种光栅图像格式进行编码和解码的公共接口。
支持为图像格式添加动态格式。
支持对图像的像素进行多种处理,包括亮度、对比度、颜色平衡、模糊、消弱等。
支持对图像进行旋转、剪切等操作。
主要通过Image(抽象类)实现。
Bitmap类
从Image派生,可以处理BMP、Jpeg、GIF、PNG等格式
1.构建
Bitmap bt1 = new Bitmap(“c://1.bmp”);
Bitmap bt2 = new Bitmap(bt1,200,300);
Bitmap bt3; bt3.FromFile(“文件名称”);
2.Bitmap类常用属性
名称 描述
Height 图像的高度
HorizontalResolution 图像水平方向上的分辨率
Palette 图像所使用的调色板
PhysicalDimension 图像的物理维度
PixelFormat 图像像素的格式
RawFormat 图像的存储格式
Size 图像的尺寸
VerticalResolution 图像垂直方向上的分辨率
Width 图像的宽度
3.Bitmap类常用方法
名称 描述
Dispose 释放图像资源
GetBounds 获得图像对象的矩形边界
GetFrameCount 得到指定维度上的边框数目
GetPropertyItem 得到图像的属性信息
GetThumbnailImage 得到缩略图
RemovePropertyItem 删除图像对象的属性信息
RotateFlip 对图像进行旋转或翻转
Save 按照指定格式保存图像
SaveAdd 添加编码信息后保存图像
SelectActiveFrame 选择图像的活动边界
ImageFormat
Bmp:获取位图图像格式(BMP)。
Emf:获取增强型Windows 图元文件图像格式(EMF)。
Exif:获取可交换图像文件(Exif) 格式。
Gif:获取图形交换格式(GIF) 图像格式。
Guid:获取表示此ImageFormat对象的Guid结构。
Icon:获取Windows 图标图像格式。
Jpeg:获取联合图像专家组(JPEG) 图像格式。
MemoryBmp:获取内存位图图像格式。
Png:获取W3C 可移植网络图形(PNG) 图像格式。
Tiff:获取标签图像文件格式(TIFF) 图像格式。
Wmf:获取Windows 图元文件(WMF) 图像格式。
DEMO1:图像的转换
二、图像物理变换
Image.RotateFlip方法
Rotate180FlipNone:指定不进行翻转的180 度旋转。
Rotate180FlipX:指定后接水平翻转的180 度旋转。
Rotate180FlipXY:指定后接水平翻转和垂直翻转的180 度旋转。
Rotate180FlipY:指定后接垂直翻转的180 度旋转。
Rotate270FlipNone:指定不进行翻转的270 度旋转。
Rotate270FlipX:指定后接水平翻转的270 度旋转。
Rotate270FlipXY:指定后接水平翻转和垂直翻转的270 度旋转。
Rotate270FlipY:指定后接垂直翻转的270 度旋转。
Rotate90FlipNone:指定不进行翻转的90 度旋转。
Rotate90FlipX:指定后接水平翻转的90 度旋转。
Rotate90FlipXY:指定后接水平翻转和垂直翻转的90 度旋转。
Rotate90FlipY:指定后接垂直翻转的90 度旋转。
RotateNoneFlipNone:指定不进行旋转和翻转。
RotateNoneFlipX:指定没有后跟水平翻转的旋转。
RotateNoneFlipXY:指定没有后跟水平和垂直翻转的旋转。
RotateNoneFlipY:指定没有后跟垂直翻转的旋转。
DEMO2:图像的变换
三、坐标系和变换
坐标系
GDI+使用三个坐标空间:世界、页面和设备。
世界坐标是用于建立特殊图形世界模型的坐标系,也是在.NET Framework 中传递给方法的坐标系。
页面坐标系是指绘图图面(如窗体或控件)使用的坐标系。
设备坐标系是在其上进行绘制的物理设备(如屏幕或纸张)所使用的坐标系。
坐标系和变换
myGraphics.TranslateTransform(100, 50); myGraphics.DrawLine(myPen, 0, 0, 160, 80);
Graphics变换相关方法
ResetTransform
TranslateTransform:平移
RotateTransform:旋转
ScaleTransform:缩放
使用Matrix 类进行变换
Matrix.Rotate方法:顺时针按照指定角度旋转
Matrix.Scale方法:缩放
Matrix.Translate方法:平移
DEMO3:坐标系变换示例
DEMO4:图像变换
摘要:
在本节中,我们将继续学习有关图像处理的一些知识:包括颜色基本知识、图像的剪切和和粘贴、坐标系变换、各种图像特效的实现等。
注:本系列节选自MSDN Webcasts上邵志东老师的《 .NET Windows编程系列课程》PPT内容,在我的Blog中整理发表,方便大家一同参考!此系列相关资料请到这里下载。
本节主要内容:
从颜色谈起
图像的复制和粘贴
像素处理
动画
综合实例
一、从颜色谈起
颜色表示
RGB:即用红、绿、蓝和透明度的组合来表示计算机中所有颜色。
HSB:即用色调、饱和度、亮度的组合方式来表示颜色。
CMYK:代表印刷上用的四种颜色,C代表青色,M代表洋红色,Y代表黄色,K代表黑色。
1.RGB模式
RGB是色光的色彩模式。三种色彩叠加形成了其它的色彩。因为三种颜色都有256个亮度水平级,所以三种色彩叠加就形成1670万种颜色了。也就是真彩色,通过它们足以在现绚丽的世界。
在RGB模式中,由红、绿、蓝相叠加可以产生其它颜色,因此该模式也叫加色模式。所有显示器、投影设备以及电视机等等许多设备都依赖于这种加色模式来实现的。 就编辑图像而言,RGB色彩模式也是最佳的色彩模式,因为它可以提供全屏幕的24bit的色彩范围,即真彩色显示。
但是,如果将RGB模式用于打印就不是最佳的了,因为RGB模式所提供的有些色彩已经超出了打印的范围之外,因此在打印一幅真彩色的图像时,就必然会损失一部分亮度,并且比较鲜艳的色彩肯定会失真的。
2.HSB模式
在HSB模式中,H表示色相,S表示饱和度,B表示亮度。
色相:是纯色,即组成可见光谱的单色。红色在0度,绿色在120度,蓝色在240度。它基本上是RGB模式全色度的饼状图。
饱和度:表示色彩的纯度,为0时为会色。白、黑和其他灰色色彩都没有饱和度的 在最大饱和度时,每一色相具有最纯的色光。
亮度:是色彩的明亮度。为0时即为黑色,最大亮度是色彩最鲜明的状态。
3.CMYK模式
当阳光照射到个物体上时,这个物体将吸收一部分光线,并将剩下的光线进行反射,反射的光线就是我们所看见的物体颜色。这是一种减色色彩模式,同时也是与RGB模式的根本不同之处。不但我们看物体的颜色时用到了这种减色模式,而且在纸上印刷时应用的也是这种减色模式。按照这种减色模式,就衍变出了适合印刷的CMYK色彩模式。
因为在实际引用中,青色、洋红色和黄色很难叠加形成真正的黑色,最多不过是褐色而已。因此才引入了k――黑色。黑色的作用是强化暗调,加深暗部色彩。
CMYK模式是最佳的打印模式
DEMO1:颜色示例
二、图像的复制和粘贴
Clipboard类
Clipboard类提供了可以用来与Windows操作系统剪贴板功能交互的方法。许多应用程序都将剪贴板用作一个临时数据储存库。剪贴板还可用于从一个应用程序向另一个应用程序传输数据。
调用SetDataObject,将数据置于剪贴板中。调用GetDataObject,从剪贴板中检索数据。
DEMO2:图像复制和粘贴
三、像素处理
改变图像的分辨率
彩色图像变换(逆反处理、平滑处理、霓虹处理、浮雕处理、镶嵌处理、灰度处理)
DEMO3:更改图像分辨率
图像特效
单色处理:用原来颜色的一个分量代替其他分量。
反色处理:颜色所有分量,用255减去该分量代替。
平滑处理:像素点颜色用周围像素的平均值代替。
霓虹处理:首先计算像素f(i,j)的红、绿、蓝分量与同行f(i+1,j)以及同列f(i,j+1)相邻像素的梯度,即差的平方之和的平方根,然后将梯度值作为处理后该像素的颜色值。
锐化处理:由f(i,j)与f(i-1,j-1)像素值之差的绝对值的百分比之和,作为新值。
浮雕处理:算法为:g(i,j) = f(i,j)-f(i-1,j)+常数(一般为128)。
马赛克处理:处理后图像每一小矩阵内的所有像素都取此矩阵内源图像各像素值之和的平均值。本节示例为5*5。
灰度处理:int gray=r*0.3+g*0.59+b*0.11;然后令r=g=b=gray即可。
透明度变换:修改像素透明度。
DEMO4:图像特效
四、动画
动画和图像切换
1.动画有三种:
位置不动,形态动;位置动,形态不动;位置和形态都动
2.图像切换技术
图像排列方法; DrawImage方法
DEMO5:图像切换
五、综合实例
DEMO6:图像处理综合实例
http://www.it55.com/html/xueyuan/chengxukaifa/c_jiaocheng/20071107/258120.html
在.NET编程中,由于GDI+的出现,使得对于图像的处理功能大大增强。在本节介绍如何在.NET中显示图像、如何对图像进行旋转和剪切等物理变换,并且我们将实现一个简易的图像处理程序。
注:本系列节选于MSDN Webcasts上邵志东老师的《 .NET Windows编程系列课程》,在我的Blog中整理发表,方便大家一同参考!此系列相关资料请到这里下载。
本节主要内容:
GDI+中的图像处理
图像物理变换
坐标系和变换
一、GDI+中的图像处理
GDI+中对图像处理提供了以下支持:
支持BMP、GIF、JPEG、PNG、TIFF、ICON等等广泛格式的图像文件。
提供了用于多种光栅图像格式进行编码和解码的公共接口。
支持为图像格式添加动态格式。
支持对图像的像素进行多种处理,包括亮度、对比度、颜色平衡、模糊、消弱等。
支持对图像进行旋转、剪切等操作。
主要通过Image(抽象类)实现。
Bitmap类
从Image派生,可以处理BMP、Jpeg、GIF、PNG等格式
1.构建
Bitmap bt1 = new Bitmap(“c://1.bmp”);
Bitmap bt2 = new Bitmap(bt1,200,300);
Bitmap bt3; bt3.FromFile(“文件名称”);
2.Bitmap类常用属性
名称 描述
Height 图像的高度
HorizontalResolution 图像水平方向上的分辨率
Palette 图像所使用的调色板
PhysicalDimension 图像的物理维度
PixelFormat 图像像素的格式
RawFormat 图像的存储格式
Size 图像的尺寸
VerticalResolution 图像垂直方向上的分辨率
Width 图像的宽度
3.Bitmap类常用方法
名称 描述
Dispose 释放图像资源
GetBounds 获得图像对象的矩形边界
GetFrameCount 得到指定维度上的边框数目
GetPropertyItem 得到图像的属性信息
GetThumbnailImage 得到缩略图
RemovePropertyItem 删除图像对象的属性信息
RotateFlip 对图像进行旋转或翻转
Save 按照指定格式保存图像
SaveAdd 添加编码信息后保存图像
SelectActiveFrame 选择图像的活动边界
ImageFormat
Bmp:获取位图图像格式(BMP)。
Emf:获取增强型Windows 图元文件图像格式(EMF)。
Exif:获取可交换图像文件(Exif) 格式。
Gif:获取图形交换格式(GIF) 图像格式。
Guid:获取表示此ImageFormat对象的Guid结构。
Icon:获取Windows 图标图像格式。
Jpeg:获取联合图像专家组(JPEG) 图像格式。
MemoryBmp:获取内存位图图像格式。
Png:获取W3C 可移植网络图形(PNG) 图像格式。
Tiff:获取标签图像文件格式(TIFF) 图像格式。
Wmf:获取Windows 图元文件(WMF) 图像格式。
DEMO1:图像的转换
二、图像物理变换
Image.RotateFlip方法
Rotate180FlipNone:指定不进行翻转的180 度旋转。
Rotate180FlipX:指定后接水平翻转的180 度旋转。
Rotate180FlipXY:指定后接水平翻转和垂直翻转的180 度旋转。
Rotate180FlipY:指定后接垂直翻转的180 度旋转。
Rotate270FlipNone:指定不进行翻转的270 度旋转。
Rotate270FlipX:指定后接水平翻转的270 度旋转。
Rotate270FlipXY:指定后接水平翻转和垂直翻转的270 度旋转。
Rotate270FlipY:指定后接垂直翻转的270 度旋转。
Rotate90FlipNone:指定不进行翻转的90 度旋转。
Rotate90FlipX:指定后接水平翻转的90 度旋转。
Rotate90FlipXY:指定后接水平翻转和垂直翻转的90 度旋转。
Rotate90FlipY:指定后接垂直翻转的90 度旋转。
RotateNoneFlipNone:指定不进行旋转和翻转。
RotateNoneFlipX:指定没有后跟水平翻转的旋转。
RotateNoneFlipXY:指定没有后跟水平和垂直翻转的旋转。
RotateNoneFlipY:指定没有后跟垂直翻转的旋转。
DEMO2:图像的变换
三、坐标系和变换
坐标系
GDI+使用三个坐标空间:世界、页面和设备。
世界坐标是用于建立特殊图形世界模型的坐标系,也是在.NET Framework 中传递给方法的坐标系。
页面坐标系是指绘图图面(如窗体或控件)使用的坐标系。
设备坐标系是在其上进行绘制的物理设备(如屏幕或纸张)所使用的坐标系。
坐标系和变换
myGraphics.TranslateTransform(100, 50); myGraphics.DrawLine(myPen, 0, 0, 160, 80);
Graphics变换相关方法
ResetTransform
TranslateTransform:平移
RotateTransform:旋转
ScaleTransform:缩放
使用Matrix 类进行变换
Matrix.Rotate方法:顺时针按照指定角度旋转
Matrix.Scale方法:缩放
Matrix.Translate方法:平移
DEMO3:坐标系变换示例
DEMO4:图像变换
摘要:
在本节中,我们将继续学习有关图像处理的一些知识:包括颜色基本知识、图像的剪切和和粘贴、坐标系变换、各种图像特效的实现等。
注:本系列节选自MSDN Webcasts上邵志东老师的《 .NET Windows编程系列课程》PPT内容,在我的Blog中整理发表,方便大家一同参考!此系列相关资料请到这里下载。
本节主要内容:
从颜色谈起
图像的复制和粘贴
像素处理
动画
综合实例
一、从颜色谈起
颜色表示
RGB:即用红、绿、蓝和透明度的组合来表示计算机中所有颜色。
HSB:即用色调、饱和度、亮度的组合方式来表示颜色。
CMYK:代表印刷上用的四种颜色,C代表青色,M代表洋红色,Y代表黄色,K代表黑色。
1.RGB模式
RGB是色光的色彩模式。三种色彩叠加形成了其它的色彩。因为三种颜色都有256个亮度水平级,所以三种色彩叠加就形成1670万种颜色了。也就是真彩色,通过它们足以在现绚丽的世界。
在RGB模式中,由红、绿、蓝相叠加可以产生其它颜色,因此该模式也叫加色模式。所有显示器、投影设备以及电视机等等许多设备都依赖于这种加色模式来实现的。 就编辑图像而言,RGB色彩模式也是最佳的色彩模式,因为它可以提供全屏幕的24bit的色彩范围,即真彩色显示。
但是,如果将RGB模式用于打印就不是最佳的了,因为RGB模式所提供的有些色彩已经超出了打印的范围之外,因此在打印一幅真彩色的图像时,就必然会损失一部分亮度,并且比较鲜艳的色彩肯定会失真的。
2.HSB模式
在HSB模式中,H表示色相,S表示饱和度,B表示亮度。
色相:是纯色,即组成可见光谱的单色。红色在0度,绿色在120度,蓝色在240度。它基本上是RGB模式全色度的饼状图。
饱和度:表示色彩的纯度,为0时为会色。白、黑和其他灰色色彩都没有饱和度的 在最大饱和度时,每一色相具有最纯的色光。
亮度:是色彩的明亮度。为0时即为黑色,最大亮度是色彩最鲜明的状态。
3.CMYK模式
当阳光照射到个物体上时,这个物体将吸收一部分光线,并将剩下的光线进行反射,反射的光线就是我们所看见的物体颜色。这是一种减色色彩模式,同时也是与RGB模式的根本不同之处。不但我们看物体的颜色时用到了这种减色模式,而且在纸上印刷时应用的也是这种减色模式。按照这种减色模式,就衍变出了适合印刷的CMYK色彩模式。
因为在实际引用中,青色、洋红色和黄色很难叠加形成真正的黑色,最多不过是褐色而已。因此才引入了k――黑色。黑色的作用是强化暗调,加深暗部色彩。
CMYK模式是最佳的打印模式
DEMO1:颜色示例
二、图像的复制和粘贴
Clipboard类
Clipboard类提供了可以用来与Windows操作系统剪贴板功能交互的方法。许多应用程序都将剪贴板用作一个临时数据储存库。剪贴板还可用于从一个应用程序向另一个应用程序传输数据。
调用SetDataObject,将数据置于剪贴板中。调用GetDataObject,从剪贴板中检索数据。
DEMO2:图像复制和粘贴
三、像素处理
改变图像的分辨率
彩色图像变换(逆反处理、平滑处理、霓虹处理、浮雕处理、镶嵌处理、灰度处理)
DEMO3:更改图像分辨率
图像特效
单色处理:用原来颜色的一个分量代替其他分量。
反色处理:颜色所有分量,用255减去该分量代替。
平滑处理:像素点颜色用周围像素的平均值代替。
霓虹处理:首先计算像素f(i,j)的红、绿、蓝分量与同行f(i+1,j)以及同列f(i,j+1)相邻像素的梯度,即差的平方之和的平方根,然后将梯度值作为处理后该像素的颜色值。
锐化处理:由f(i,j)与f(i-1,j-1)像素值之差的绝对值的百分比之和,作为新值。
浮雕处理:算法为:g(i,j) = f(i,j)-f(i-1,j)+常数(一般为128)。
马赛克处理:处理后图像每一小矩阵内的所有像素都取此矩阵内源图像各像素值之和的平均值。本节示例为5*5。
灰度处理:int gray=r*0.3+g*0.59+b*0.11;然后令r=g=b=gray即可。
透明度变换:修改像素透明度。
DEMO4:图像特效
四、动画
动画和图像切换
1.动画有三种:
位置不动,形态动;位置动,形态不动;位置和形态都动
2.图像切换技术
图像排列方法; DrawImage方法
DEMO5:图像切换
五、综合实例
DEMO6:图像处理综合实例
http://www.it55.com/html/xueyuan/chengxukaifa/c_jiaocheng/20071107/258120.html