php cimage类,强大的多功能的用VB编写的高速图像处理库Cimage简介! - 小志的日志 - 电子工程世界-论坛...
Cimage类下载地址:http://www.vbgood.com/viewthread.php?tid=53287&extra=page%3D2&page=4
相关讨论群:30417248 欢迎大家试用和讨论.
Cimage类是采用Visual Basic 6.0编写的一款图像和图形处理的类库(以图像处理为主),全面支持1位色\4位色\8位色\24位色\32位色(BMP格式),非BMP格式通过VB的stdpicture对象转换后进行处理,采用模拟指针和DIBSECTION相结合的技术,使处理速度大大提高,大部分绝对不会低于VC的90%,部分可能会优于VC。结合自行开发的canvas控件可以很好的显示和处理图像。现把主要功能介绍如下:
1、常用属性:
BackColor
设置背景色
ForeColor
前景色
ColorBit
DIB对象的颜色位数
DataPtr
DIB数据存放的首位地址
hDC
设备场景
Height
DIB的高度
Width
DIB的宽度
ImageDataSize
图像数据的总大小
ImageMode
图像的位数
ImageFormat
图像的格式
TextAlignment
文字对齐方式
TextHeight
指定文字的高度
TextWidth
指定文字的宽度
WidthBytes
DIB对象的扫描的行的宽度
HasWaterMark
是否有水印
HorizontalResolution
水平分辨率
HorizontalResolution
垂直分辨率
2、常用非图像图形处理方法:
Clone
clone一个新的完全一样的对象。包括选入其中的所有资源
CopyDataToCImage
仅复制DIB图像数据到指定的对象,指定的对象必须和原来的具有同样的颜色深度和大小。
CopyToClipBoard
把数据复制到剪贴板,如果cut为真的,则同时删除原对象中的数据。
FreePoint
模拟指针中的函数,对应MakePoint,学习自zyl910。
MakePoint
同上,通过这两个函数,用户可以自己编写扩展代码。
GetDCMaxX
得到DC中水平方向的可见范围
GetDCMaxY
得到DC中垂直方向的可见范围
GetNearestColor
得到指定的颜色与指定的颜色表中颜色最接近的颜色。
GetRGB
得到指定颜色的R\G\B分量
颜色模式转换函数
RGBToYUV YUVToRGB RGBToCMYK CMYKToRGB
YCbCrToRGB RGBToYCbCr RGBToHLS HLStoRGB
RGB模型到HLS模型,比网上流行的代码速度做了优化。
UsedColorsAmount
图片中使用的不同颜色个数。
GetSpecialColorTable
得到特定的调色板,包括流行色,网络安全色,半掉网屏,mspaint的调色板,灰度调色板等。
GetHistgramArray
得到直方图的数据,包括除了Bitmap模式外的所有格式(4位色的提取其实比较困难,不过以实现,和PS的结果完全一致)。
SetProcessingArea
设置处理区域,目前只支持矩形区域。所有支持处理函数都是在这个基础上进行的。
几个绘制图形的方法
DrawDiamond
DrawEllipseEx (绘制倾斜的椭圆)
DrawLine
DrawPie
DrawStar
3、创建、销毁、输出、保存函数
Create:
创建新的DIB对象,可以选择位数(目前虽然可选位数,但在外部调用的时候有意义的只有32位\24位\8位)以及背景色。
CreateFromFile
从文件直接创建DIB对象,会检查文件是否存在以及是否是图片文件。如果为BMP文件,则分析其是几位色。如果为非BMP格式但是是VB支持的图片文件,则自动转换为32色的处理。这个函数最常用,自我觉得支持的比较全面了,对于1位\4位\8位色图片考虑到了调色板的设置。
CreateFromStdPicture
从StdPicture对象创建DIB对象,32位。
CreateFromStdPictureEx
扩展的从StdPicture对象创建DIB对象,32位,包括一些区域参数设置。
CreateFromDC
从设备场景创建DIB对象,会自动分析设备场景的水平和垂直可见区域,对于不可见区域不予以考虑(即使考虑也是黑色的一片,似乎没有意义)。
CreateFromClipBoard
从剪贴板创建DIB对象,会分析剪贴板是否含有有效数据。
以上函数返回值表示了DIB对象是否创建成功。
CreateFromByteArray
CreateFromRGBArray
这两个函数可以接受数组而显示数字图像,我们常常在计算温度场等等的,就可以用这个函数直接显示图像
Destroy
销毁DIB对象及相关资源。
OutPut
输出到目标DC,可指定位置参数等。
OutPutEx
输出到指定句柄的对象中
StretchOutPut
缩放输出,用在放大和缩小上。
SaveImage
支持BMP、JPG格式。会自动分析颜色位数。
4、切换图像模式:
处理速度以1024*768的图像为准,机器配置256MB内存,塞扬2.4G,XP系统。
ChangeToBitmapMode
转换成BitmapMode模式,既黑和白,提供Bayer\ ErrorDiffuse \Floyd_Steinberg\ ZYL910\None(Bitblt)几种抖动方法。原始图像必须是灰度模式,大概50ms。
ChangeToGreyMode
转换成灰度模式(8位),原始图像可为32位,24位,8位\4位索引色。最慢32ms。
ChangeToIndexMode
通过指定的调色板转换成索引色,可指定是否抖动。原始图像可为32色\24色\灰度图像。时间估计:100ms
如何得到当前图像的调色板,可参考GetSpecialColorTable函数。
ChangeToRGBMode
转换为RGB模式,可选位数(24\32),用时16ms。
5、模拟PS中的调整菜单函数函数:
AutoLightness
自动亮度 200ms
AdjustBrightnessAndContrast
调整亮度和对比度,完全等同于PS 15ms
Desaturate
去色 15ms
Equalize
色调均化 32ms
Exposal
暴光效果 32ms
Invert
反色 15ms
ShiftHLS
模拟PS的色相饱和度功能。
AutoSaturation
自动饱和度。
AdjustLevels
调整色阶。
ChannelMixer
通道混合器。
ColorBalance
颜色平衡
BinSpecifiedThreshold
阀值
6、模拟PS中的画布调整和大小函数:
Rotate180
旋转180 速度15ms。
Rotate270
旋转270 速度15ms。
Rotate90
旋转90 速度15ms。
Rotate
任意角度旋转,支持背景色,支持抗锯齿。速度视旋转角度而定,但不超过250ms。
FlipHorizontal
水平翻转。
FlipVertical
垂直翻转。
MirrorX
X轴镜像。
MirrorY
Y轴镜像。
AdjustCanvas
改变位置
Resample
缩放图像大小。可选4种缩放方法,双线形插值\三次立方\系统自带的stretchblt,改进自zyl910的代码。
以上函数均支持多种颜色位深。
7、其他常用PS中的功能
Crop
裁剪,可指定是否保留源数据
FillWithColor
用指定的颜色填充选定区域,可指定透明度和混合方式。
FillWithPattern
用指定的模板填充选定区域,可指定透明度和混合方式。
以上两个函数会自动更改所提供的颜色参数以使得填充后的图像符合原来的格式(针对索引色和灰度模式才有这个过程)。
AddNoise
给图像添加噪音,噪音类型可选平均分布,高司分布和椒盐噪音,可选单色。针对真彩色和灰度,可实时显示与调节。
AverageBlur
均值模糊。
Charcoal
特效。
Mosaic
马赛克效果,速度做过优化,不超过70ms。
Stroke
描边,可选边缘位置,长度,透明度和混合模式。
OffSet
模仿PS的偏移功能等等
Scanlines
扫描线效果。
Diffuse
溶解效果。
Emboss
雕刻效果。
Erode
腐蚀效果。
Blendimage
用于两副图片合成,支持PS的图层中的所有混合模式,速度高速。
Transparentblt
透明合成,不是系统的哪个API函数,速度要优于系统,并且可指定透明色。
CoolString
生成COOL字。
GrayToTrueColor
伪彩色显示灰度图,支持6种方法。
ShadeRect
模拟图像被选中时的效果。
8、常用二值化功能
BinMaxEntropy
BinOtsu
BinP_Tile
BinSpecifiedThreshold
BinSwatanabe
BinSlice
9、常用条形码生成函数
可生成以下几种条形码
Code39 = 0
RationalCodabar = 1
CodeI2of5 = 2
Code93 = 3
Postnet = 4
EAN13 = 5
UPCA = 6
GenerateBarCode
生成条形码
10、其他常用有特色的函数
Watermark
添加字符和图片水印(非严格意义上的水印)
EmbedWaterMark
嵌入水印。针对真彩色和灰度,水印图像的格式可以和原图像不同。
PickWaterMark
提取水印。
Compareimage
快速比较两副图片是否完全相同,参数可以是Cimage类或者文件。
捕捉屏幕函数
SnapScreen
SnapActiveWindow
SnapControlFromHwnd
SnapAllScreen
以上除了第二个函数外,都可以指定延迟时间。
图像硬聚类和模糊聚类函数
Fcm
Hcm
以上两个函数请参考博客中的相关文章。
HoughDetection
哈弗变换检测直线的代码。
BitmapToRegion
位图转换为区域的,可以用来做异形窗体。
CreateCursorFromBitmap
从位图创建光标,可指定透明色。
GetTextureInfo
得到图像的纹理信息
Add
两幅图像相加
SubTract
两幅图像相减
Multiply
图像乘一个因子
四个边缘检测算子
EdgeLaplace
EdgePrewitt
EdgeRoberts
EdgeSobel
11、事件处理:
ImageModeChanged
图像的模式改变时,这样方便菜单的处理。
Progressing
对于较长的处理过程提供这个事件。
ProgressEnd
处理完成,用于刷新图像等等。
ErrorOccur
用于错误提示。
php cimage类,强大的多功能的用VB编写的高速图像处理库Cimage简介! - 小志的日志 - 电子工程世界-论坛...相关推荐
- CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html
CImage类 Visual C++的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标.位图.光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP. ...
- CImage类的用法(转帖)
From: http://elevenguy.blog.163.com/blog/static/616122092010053550593/ 我们知道,Visual C++的CBitmap类和静态图片 ...
- VC6如何使用VS2005中的CImage类功能
由于VC6启动速度快,产生的执行代码小,还有可爱的类向导,所以许多C++程序员还工作在VC6环境中. 但是我们想在VC6中用VS2005中的新功能怎么办呢?例如CImage类(有很强的图像 ...
- 【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类
本系列文章由zhmxy555编写,转载请注明出处. http://qianmo.blog.51cto.com/5127279/875711 作者:毛星云 邮箱: happylifemxy@qq.com ...
- MFC中CImage类显示的半透明PNG存在的问题以及处理方法
在MFC中自己也做过很多关于如何实现图片半透明的方法,包括抠图,图像数据计算等,但是使用MFC中CImage的时候有时候是透明的,有时候透明部分为白色!让人难以置信,最后在不经意间发现了这边文章才恍然 ...
- CImage类的使用介绍!
链接参考:http://www.cnblogs.com/juncheng/articles/1600730.html CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG.GIF. ...
- 用CImage类来显示PNG JPG等图片
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...
- (已更新)谁是卧底线下发牌器微信小程序源码下载,强大的自定义功能
看名字就知道啦,这是一个谁是卧底的小程序源码 游戏规则: 谁是卧底是一款线下聚会的游戏,考验口才和脑力的同时,也能活跃气氛. 游戏人数为4-12人,游戏角色包括平民,卧底,白板可供用户选择! 游戏步骤 ...
- 谁是卧底线下发牌器微信小程序源码下载,强大的自定义功能
看名字就知道啦,这是一个谁是卧底的小程序源码 游戏规则: 谁是卧底是一款线下聚会的游戏,考验口才和脑力的同时,也能活跃气氛. 游戏人数为4-12人,游戏角色包括平民,卧底,白板可供用户选择! 游戏步骤 ...
- 【小程序源码】谁是卧底线下发牌器微信小程序源码下载,强大的自定义功能
看名字就知道啦,这是一个谁是卧底的小程序源码 游戏规则: 谁是卧底是一款线下聚会的游戏,考验口才和脑力的同时,也能活跃气氛. 游戏人数为4-12人,游戏角色包括平民,卧底,白板可供用户选择! 游戏步骤 ...
最新文章
- NETMF Versions 4.1 Release 发布
- onvirt安装linux系统
- 第三节 计算机体系结构,计算机系统结构 第三节 输入输出系统.pdf
- ejb生命周期_无状态EJB:池化和生命周期
- java calendar_Java Calendar getLeastMaximum()方法与示例
- python多线程教程_Python多线程编程教程【2小时学会】
- 抽象方法实现多态___森林里的动物在快乐的生活
- python3.5安装教程及环境配置_Python安装和环境配置教程
- oracle数据导入/导出
- linq分类汇总怎么写_包围结构的字怎么写才好看?掌握方法是关键,分类总结要领很实用...
- scapy(二):基于流量分析的SQL注入检测
- 基于UML软件建模的企业人事管理系统
- Minecraft MOD 开发记录
- ffmpeg学习:滤镜(实现视频缩放,裁剪,水印等) -
- 美国工程师发明6冲程节能发动机
- Python 小写数字转为大写
- 计算机与网络之间是红叉,雨林木风win7系统网络连接出现红叉无法上网的解决办法...
- 数据库表的软硬关联_Jimmy的关系型数据库设计心得 第一版
- 优秀的 Verilog/FPGA开源网站介绍
- python判断素数_小白学Python | 你还在说你入不了门吗