|
输入图片:
(R+G+B)/3 滤镜算法:
R*0.299+G*0.587+B*0.114 滤镜算法
- .版本 2
- .支持库 BmpOperate
- .程序集 程序集1, , , 2021-03-21
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 位图, 位图
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- .如果真 (位图.载入文件 (“in.bmp”) = 假)
- 信息框 (位图.取错误信息 (), 0, , )
- 结束 ()
- .如果真结束
- 写到文件 (“out.bmp”, 位图_黑白 (位图).取位图数据 ())
- 写到文件 (“out2.bmp”, 位图_黑白2 (位图).取位图数据 ())
- .子程序 位图_黑白, 位图, 公开, (R+G+B)/3 算法
- .参数 位图, 位图
- .局部变量 宽, 整数型
- .局部变量 高, 整数型
- .局部变量 X, 整数型
- .局部变量 Y, 整数型
- .局部变量 返回值, 位图
- .局部变量 颜色, 整数型
- 宽 = 位图.取宽度 ()
- 高 = 位图.取高度 ()
- 返回值.创建 (宽, 高, 位图.取位深度 (), )
- .变量循环首 (0, 宽 - 1, 1, X)
- .变量循环首 (0, 高 - 1, 1, Y)
- 颜色 = 位图.取某点颜色 (X, Y)
- 返回值.置某点颜色 (X, Y, 取颜色值_灰度 ((取红色值 (颜色) + 取绿色值 (颜色) + 取蓝色值 (颜色)) ÷ 3))
- .变量循环尾 ()
- .变量循环尾 ()
- 返回 (返回值)
- .子程序 位图_黑白2, 位图, 公开, R*0.299+G*0.587+B*0.114 算法
- .参数 位图, 位图
- .局部变量 宽, 整数型
- .局部变量 高, 整数型
- .局部变量 X, 整数型
- .局部变量 Y, 整数型
- .局部变量 返回值, 位图
- .局部变量 颜色, 整数型
- 宽 = 位图.取宽度 ()
- 高 = 位图.取高度 ()
- 返回值.创建 (宽, 高, 位图.取位深度 (), )
- .变量循环首 (0, 宽 - 1, 1, X)
- .变量循环首 (0, 高 - 1, 1, Y)
- 颜色 = 位图.取某点颜色 (X, Y)
- 返回值.置某点颜色 (X, Y, 取颜色值_灰度 (取红色值 (颜色) × 0.299 + 取绿色值 (颜色) × 0.587 + 取蓝色值 (颜色) × 0.114))
- .变量循环尾 ()
- .变量循环尾 ()
- 返回 (返回值)
- .子程序 取红色值, 字节型
- .参数 颜色值, 整数型
- 置入代码 ({ 139, 69, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
- ' mov eax,[ebp+8]
- ' and eax,255
- ' leave
- ' retn 4
- 返回 (0)
- .子程序 取绿色值, 字节型
- .参数 颜色值, 整数型
- 置入代码 ({ 139, 69, 8, 193, 232, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
- ' mov eax,[ebp+8]
- ' shr eax,8
- ' and eax,255
- ' leave
- ' retn 4
- 返回 (0)
- .子程序 取蓝色值, 字节型
- .参数 颜色值, 整数型
- 置入代码 ({ 139, 69, 8, 193, 232, 16, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
- ' mov eax,[ebp+8]
- ' shr eax,16
- ' and eax,255
- ' leave
- ' retn 4
- 返回 (0)
- .子程序 取颜色值_灰度, 整数型, , 置入代码:返回 (取颜色值 (灰度, 灰度, 灰度))
- .参数 灰度, 字节型, , 数值范围从 0 到 255,表示颜色中的灰度成份。
- 置入代码 ({ 51, 192, 138, 69, 8, 193, 224, 8, 138, 69, 8, 193, 224, 8, 138, 69, 8, 201, 194, 4, 0 })
- ' xor eax,eax
- ' mov al,[ebp+8]
- ' shl eax,8
- ' mov al,[ebp+8]
- ' shl eax,8
- ' mov al,[ebp+8]
- ' leave
- ' retn 4
- 返回 (0)
复制代码 |
|