aardio 文档

soImage 库模块帮助文档

soImage 成员列表 #

soImage() #

创建图像

返回对象:soImageObject

soImage.checkType("*.bmp") #

参数为图像路径或文件名,
返回数值格式的图像数型

soImage.gifFile("GIF文件路径",循环次数,注释) #

创建GIF文件
消除方法指的是下一帧擦除上帧背景的方法,可选1,2,3

soImage.gifFile() #

返回对象:soImageGifFileObject

soImageObject 成员列表 #

soImageObject.bpp #

修改或获取图像位宽

soImageObject.bpp(8) #

修改图像位宽
参数为0是获取图像当前位宽

soImageObject.bpp(8,true) #

修改图像位宽,允许误差扩散

soImageObject.capture(窗口句柄,x坐标,y坐标,宽度,高度,鼠标放大百分比) #

抓屏,所有参数可选,
如果不指定鼠标放大百分比则不截图不含鼠标指针,
放大百分比为 100 表示指针原始大小,忽略系统鼠标放大设置,
此函数会自动清屏并调整为合适图像位宽(BPP)
明确指定窗口或坐标缩小抓屏面积可优化性能,
使用 win.getScreenPos 可获取一个或多个显示器组成的虚拟屏幕位置与大小

soImageObject.captureWindow #

在屏幕上抓取指定窗口的图像。
当指定窗口句柄时 capture 函数在窗口内截图。
但 captureWindow 是在屏幕上截取指定窗口区域的图像。
这两个函数的实现是不同的,对于窗口截图,captureWindow 的兼容性更好。

soImageObject.captureWindow(窗口句柄,x坐标,y坐标,宽度,高度) #

在屏幕上抓取指定窗口客户区(不含标题栏)的图像。
除窗口句柄以外其他参数可选。

soImageObject.captureWindow(窗口句柄,x坐标,y坐标,宽度,高度,true) #

在屏幕上抓取指定窗口(含标题栏)的图像。
除窗口句柄以外其他参数可选。

soImageObject.clear() #

清空图像

soImageObject.cmp(匹配图像) #

返回图像差异值,完全相似返回0 完全不相似为两个图片的面积相加,
精确匹配能力一般,模糊识别的能力较强

soImageObject.cmp2(匹配图像) #

返回差异值,完全一样为0,完全不一样为1,通常返回的是1到0之间的小数,数字越小表示两个图片越接近相似,
精确匹配能力较差,模糊识别的能力一般

soImageObject.cmp3(匹配图像) #

返回相似度,完全一样为0,完全相似返回0 完全不相似为单个图片的面积
精确匹配能力最强,模糊识别的能力最差

soImageObject.copy #

复制图像

soImageObject.copy() #

复制图像

返回对象:soImageObject

soImageObject.copy(左,上,右,下) #

复制并剪切图像,
返回新图像,不会修改原图

soImageObject.crop(左,上,右,下) #

剪切图像

soImageObject.decreaseBpp #

生成最优调色版并降低像素位宽为 8 位。
此函数专用于生成颜色更加自然的 GIF 文件。

soImageObject.decreaseBpp(bpp,colors,colorBits,errorDiffusion) #

生成最优调色版并降低像素位宽为 8 位。
此函数专用于生成颜色更加自然的 GIF 文件。

@bpp 参数请指定为 8,其他参数不必指定。
可选用 @colors 参数指定最大颜色数。
@colorBits 指定颜色分量有效位数,应指定为 8 或省略。
@errorDiffusion 可选指定是否允许误差扩散

soImageObject.delete() #

删除图像

soImageObject.findColor(匹配颜色,x坐标,y坐标,结束x坐标,结束y坐标) #

找色,除参数@1以外,所有参数可选,
参数@1使用RGB颜色数值
成功返回2个值,分别为最接近颜色的x坐标,y坐标,
失败返回null

soImageObject.findImage #

找图。
注意这是找图,不能用来找文字,找验证码,
也不是提供任何样本图像都能有完美的、百分百的成功率,
查找的样本图像要尽可能的小,并尽可能裁剪去掉背景,突出查找特征

soImageObject.findImage(屏幕图像,x坐标,y坐标,结束x坐标,结束y坐标,搜索步进) #

找图,除参数一以外,所有参数可选,
成功返回相似度,匹配图像的右下角坐标
└── 相似度为 0 到 100 之间的值,100 为完全相似,0 为完全不相似。

soImageObject.findImageInWindow #

指定窗口找图
注意这是找图,不能用来找文字,找验证码,
也不是提供任何样本图像都能有完美的、百分百的成功率,
查找的样本图像要尽可能的小,并尽可能裁剪去掉背景,突出查找特征

soImageObject.findImageInWindow(窗口句柄,x坐标,y坐标,结束x坐标,结束y坐标,搜索步进) #

找图,所有参数可选,
成功返回相似度,匹配图像的右下角坐标
└── 相似度为 0 到 100 之间的值,100 为完全相似,0 为完全不相似

soImageObject.flip() #

垂直翻转

soImageObject.fromBitmap(位图句柄,色板句柄) #

自位图句柄创建图像,
参数2可选

soImageObject.fromClipBD() #

自剪板板获取图像

soImageObject.fromIcon(图标句柄,是否透明图标) #

自图标句柄创建图像,
参数@2为可选参数

soImageObject.getBinString #

以 0 表示黑色像素,1 表示白色像素,返回一个包含所有像素的字符串。
图像应为黑白图像,可调用 bpp 函数将图像转换为 1 位黑白图像,

soImageObject.getBinString(width,height) #

返回一个包含所有像素的字符串,
以 0 表示黑色像素,1 表示白色像素。

可选用参数指定缩放大小,省略参数则不缩放。
@width 指定宽度,@height 指定高度,宽高必须同时指定。

soImageObject.getBits(行号) #

返回指定行图像数据,指定参数时返回值为buffer类型数组
不指定参数时直接返回全部图像原始数据指针值

soImageObject.getBytes("*.bmp") #

返回图像数据

soImageObject.getData() #

返回图像行列数据
返回值为buffer数组

soImageObject.getDib() #

返回 DIB 指针

soImageObject.getFrame() #

返回图像活动帧

soImageObject.getFrameDelay() #

返回帧延时

soImageObject.getHeight() #

获取高度

soImageObject.getJpegQuality() #

返回JPGE图像质量

soImageObject.getNumFrames() #

返回图像帧数目

soImageObject.getPixel(x,y) #

返回指定坐标点 RGB 颜色数值。
坐标参数为 0,0 返回第一个点的颜色。

soImageObject.getPixelIndex(x,y) #

获取指定坐标颜色索引

soImageObject.getTransColor() #

获取透明颜色

soImageObject.getWidth() #

获取宽度

soImageObject.grayScale() #

转换为灰度图

soImageObject.init(宽,高,位宽,"*.bmp") #

所有参数可选

soImageObject.isValid() #

图像是否有效

soImageObject.load #

载入图像文件。

soImageObject.load("路径") #

载入图像文件。

soImageObject.loadUrl() #

自参数 @1 指定的网址加载图像,成功返回 true 。
必须提前导入 inet.http 库才能使用此函数。

soImageObject.median(2) #

中值滤波,参数指定半径

soImageObject.mirror() #

左右翻转

soImageObject.mix(混合图像,x坐标,y坐标,混合样式) #

除参数1以外,其他参数可选,
混合样式请使用_MIX_前缀的常量

soImageObject.negative() #

反相

soImageObject.ocr #

基于种子连通算法的简单文本识别。
这个函数的好处是不需要其他 OCR 组件,函数实现与用法都很简单。
但仅限用于基于特定字库识别较规则的文本。
无法识别的图像请改用其他 OCR 组件。

soImage 扩展库范例中提供自动生成字库与 OCR 范例代码的工具。

soImageObject.ocr(dict,length) #

参数 @dict 必须指定由 splitBinString 函数返回值生成的字库。
可选用 @length 参数指定最大字符长度。

soImageObject.paint(hdc,x坐标,y坐标,宽度,高度) #

在指定GDI设备句柄上绘图,所有参数可选

soImageObject.repair(修复半径,修复次数) #

修复被破坏的图片

soImageObject.resize(宽,高,插值方法) #

调整图像大小,
可选用参数@3指定插值方法,可选值:
0 双线性插值,较慢
1 邻近插值,最快,效果差
2 双立方法,效果最好
默认使用双线性插值

soImageObject.resize2((宽,高,插值方法,边缘方法,禁止平均法) #

调整图像大小
可选用参数@2指定插值方法,可选值如下:
1 NEIGHBOUR;2 BILINEAR;3 BSPLINE;4 BICUBIC;5 BICUBIC2;LANCZOS 6;
7 BOX;8 HERMITE;9 HAMMING;10 SINC;11 BLACKMAN;12 BESSEL; 13 GAUSSIAN;
14 QUADRATIC;15 MITCHELL;16 CATROM;17 HANNING;18 POWER;
默认值为 BICUBIC2

边缘取值可选方法如下:
1 COLOR;2 BACKGROUND;3 TRANSPARENT;4 WRAP;5 REPEAT;6 MIRROR;
默认值为 REPEAT

可选指定参数@5为 true 以禁用平均法缩小图像

soImageObject.rotateLeft() #

左旋

soImageObject.rotateRight() #

右旋

soImageObject.save #

保存图像文件。

soImageObject.save("路径") #

保存图像文件。

soImageObject.setBits(行号,数据) #

修改图像指定行数据

soImageObject.setBytes(数据,"*.bmp") #

修改图像数据,成功返回 true。
参数@1可以是字符串对象、buffer缓区、或普通指针
如果参数@1为普通指针,则必须在参数@3中指定内存长度
否则参数@3为可选参数(用于指定图像数据长度)。
可选在参数 @2 中用文件后缀名指定图像格式,可省略。

soImageObject.setDisposalMethod(disposalMethod) #

定义 GIF 图像的背景清除方法
Potoshop 动画帧右键菜单里「处理」「不处理」其实就是这里说的背景清除方法,
0、不定义清除方法
1、不清除背景,下一帧的内容显示在当前帧的内容上面,
2、恢复背景色,然后再显示下一帧的内容
3、恢复上一帧,然后再显示下一帧的内容

可以看这里的动画演示了解这个属性的作用

soImageObject.setFrame() #

设置图像活动帧,起始索引为1,
此函数并不影响当前加载的图像,
而是在下次加载图像时起作用

soImageObject.setFrameDelay(10) #

修改帧延时,以0.01秒为单位

soImageObject.setJpegQuality(80) #

修改JPGE图像质量,参数为1到100之间

soImageObject.setPixel(x,y,颜色) #

修改指定坐标点RGB颜色数值。
坐标参数为 0,0 设置第一个点的颜色。

soImageObject.setRetreiveAllFrames(flag) #

允许载入所有帧

soImageObject.setTransColor(是否透明,透明颜色) #

修改透明颜色,参数@2使用RGB颜色数值
GIF 应当改用 setTransIndex

soImageObject.setTransIndex(index) #

设置透明索引

soImageObject.split(行,列) #

按指定的行,列数目拆分并返回多个图像,
返回值为数组

soImageObject.splitAuto(杂点系列) #

自动拆分并返回多个图像。
返回值为图像数组

soImageObject.splitBinString #

图像转为黑白并返回包含所有像素的字符串,以 0 表示黑色像素,1 表示白色像素。

soImageObject.splitBinString(length,width,height) #

用种子连通算法分割为多个图像。
参数 @1 指定最大返回图像数目,可选用 @width,@height 参数指定图像缩放到指定大小。
图像转为黑白并返回包含所有像素的字符串,以 0 表示黑色像素,1 表示白色像素。

soImageObject.splitCmyk() #

拆分为CMYK四个图像

soImageObject.splitHsl() #

拆分为HSL三个图像

soImageObject.splitRgb() #

拆分为RGB三个图像

soImageObject.splitSeed() #

使用种子连通算法分割为多个图像。
参数指定最大返回图像数目,返回值为图像数组。

soImageObject.splitXyz() #

拆分为XYZ三个图像

soImageObject.splitYiq() #

拆分为YIQ三个图像

soImageObject.splitYuv() #

拆分YUV三个图像

soImageObject.toClipBD() #

图像复制到剪贴板

soImageGifFileObject 成员列表 #

soImageGifFileObject.close() #

写入GIF文件结束标记,并关闭文件

soImageGifFileObject.count() #

获取当前已写入的图像帧数

soImageGifFileObject.disposalMethod #

定义默认的背景清除方法
Potoshop 动画帧右键菜单里「处理」「不处理」其实就是这里说的背景清除方法,
0、不定义清除方法
1、不清除背景,下一帧的内容显示在当前帧的内容上面,
2、恢复背景色,然后再显示下一帧的内容
3、恢复上一帧,然后再显示下一帧的内容

可以看这里的动画演示了解这个属性的作用

soImageGifFileObject.frameDelay #

默认每帧延时,以0.01秒为单位,默认为0.1秒

soImageGifFileObject.transColor #

指定默认透明色
如果为null表示不透明

soImageGifFileObject.write(图像,保留局部调色板,本帧延时,保留局部处理方法) #

参数@1必须是 soImage 对象,
此函数会自动检测图像,图像无效则不写入,
其他参数为可选参数,不指定则使用默认值
保留局部调色板增大体积但是图像颜色更丰富,

如果图像位宽高于8位则会降至8位,
建议事先调用 decreaseBpp 函数降低位宽可获得更好的输出效果。

自动完成常量

_MIX_ADD=7
_MIX_AND=9
_MIX_AVG=0xC
_MIX_BLENDALPHA=4
_MIX_DEFAULT=0
_MIX_DSTCOPY=3
_MIX_MASK=1
_MIX_OR=0xB
_MIX_SCREEN=6
_MIX_SRCBLEND=5
_MIX_SRCCOPY=2
_MIX_SUB=8
_MIX_XOR=0xA

Markdown 格式