|
- .版本 2
- .支持库 BmpOperate
- .程序集 程序集1
- .程序集变量 常量_颜色最远, 双精度小数型
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- 常量_颜色最远 = 取颜色相似度 (#黑色, #白色)
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 位图, 位图
- .局部变量 时间, 整数型
- 位图.载入文件 (“in.bmp”)
- 时间 = 取启动时间 ()
- 写到文件 (“out.bmp”, 位图_变黑板画 (位图, 假, 真).取位图数据 ())
- 输出调试文本 (“处理耗时:” + 到文本 (取启动时间 () - 时间) + “毫秒”)
- .子程序 位图_变黑板画, 位图, 公开
- .参数 位图, 位图
- .参数 彩色, 逻辑型, 可空
- .参数 鲜艳, 逻辑型, 可空
- .局部变量 宽, 整数型
- .局部变量 X, 整数型
- .局部变量 高, 整数型
- .局部变量 Y, 整数型
- .局部变量 颜色表, 整数型, , "4"
- .局部变量 返回值, 位图
- .局部变量 颜色, 整数型
- .局部变量 红最大, 字节型
- .局部变量 绿最大, 字节型
- .局部变量 蓝最大, 字节型
- .局部变量 红, 字节型
- .局部变量 绿, 字节型
- .局部变量 蓝, 字节型
- 宽 = 位图.取宽度 ()
- 高 = 位图.取高度 ()
- 返回值.创建 (宽, 高, 位图.取位深度 (), )
- .变量循环首 (0, 宽 - 2, 1, X)
- .变量循环首 (0, 高 - 2, 1, Y)
- 颜色表 [1] = 位图.取某点颜色 (X, Y)
- 颜色表 [2] = 位图.取某点颜色 (X + 1, Y)
- 颜色表 [3] = 位图.取某点颜色 (X, Y + 1)
- 颜色表 [4] = 位图.取某点颜色 (X + 1, Y + 1)
- .如果 (彩色)
- 颜色 = 颜色表算法_彩色 (颜色表)
- .否则
- 颜色 = 颜色表算法_黑白 (颜色表)
- .如果结束
- .如果真 (鲜艳)
- 红最大 = 字节型_取最大值 (红最大, 取红色值 (颜色))
- 绿最大 = 字节型_取最大值 (绿最大, 取绿色值 (颜色))
- 蓝最大 = 字节型_取最大值 (蓝最大, 取蓝色值 (颜色))
- .如果真结束
- 返回值.置某点颜色 (X, Y, 颜色)
- .变量循环尾 ()
- .变量循环尾 ()
- .变量循环首 (0, 宽 - 2, 1, X)
- 返回值.置某点颜色 (X, 高 - 1, 返回值.取某点颜色 (X, 高 - 2))
- .变量循环尾 ()
- .变量循环首 (0, 高 - 2, 1, Y)
- 返回值.置某点颜色 (宽 - 1, Y, 返回值.取某点颜色 (宽 - 2, Y))
- .变量循环尾 ()
- 返回值.置某点颜色 (宽 - 1, 高 - 1, 返回值.取某点颜色 (宽 - 2, 高 - 2))
- .如果真 (鲜艳)
- .变量循环首 (0, 宽 - 1, 1, X)
- .变量循环首 (0, 高 - 1, 1, Y)
- 颜色 = 返回值.取某点颜色 (X, Y)
- 红 = 取红色值 (颜色) ÷ 红最大 × 255
- 绿 = 取绿色值 (颜色) ÷ 绿最大 × 255
- 蓝 = 取蓝色值 (颜色) ÷ 蓝最大 × 255
- 返回值.置某点颜色 (X, Y, 取颜色值 (红, 绿, 蓝))
- .变量循环尾 ()
- .变量循环尾 ()
- .如果真结束
- 返回 (返回值)
- .子程序 颜色表算法_黑白, 整数型
- .参数 颜色表, 整数型, 数组
- .局部变量 总和, 双精度小数型
- .局部变量 外循环, 整数型
- .局部变量 内循环, 整数型
- .局部变量 除数, 整数型
- .计次循环首 (4, 外循环)
- .计次循环首 (4, 内循环)
- .如果真 (外循环 ≠ 内循环)
- 总和 = 总和 + 取颜色相似度 (颜色表 [外循环], 颜色表 [内循环])
- 除数 = 除数 + 1
- .如果真结束
- .计次循环尾 ()
- .计次循环尾 ()
- 返回 (取颜色值_灰度 (总和 ÷ 除数 ÷ 常量_颜色最远 × 255))
- .子程序 颜色表算法_彩色, 整数型
- .参数 颜色表, 整数型, 数组
- .局部变量 外循环, 整数型
- .局部变量 内循环, 整数型
- .局部变量 除数, 整数型
- .局部变量 红, 双精度小数型
- .局部变量 绿, 双精度小数型
- .局部变量 蓝, 双精度小数型
- .计次循环首 (4, 外循环)
- .计次循环首 (4, 内循环)
- .如果真 (外循环 ≠ 内循环)
- 红 = 红 + 取绝对值 (取红色值 (颜色表 [外循环]) - 取红色值 (颜色表 [内循环]))
- 绿 = 绿 + 取绝对值 (取绿色值 (颜色表 [外循环]) - 取绿色值 (颜色表 [内循环]))
- 蓝 = 蓝 + 取绝对值 (取蓝色值 (颜色表 [外循环]) - 取蓝色值 (颜色表 [内循环]))
- 除数 = 除数 + 1
- .如果真结束
- .计次循环尾 ()
- .计次循环尾 ()
- 返回 (取颜色值 (红 ÷ 除数, 绿 ÷ 除数, 蓝 ÷ 除数))
- .子程序 取颜色相似度, 双精度小数型
- .参数 被检测颜色, 整数型
- .参数 检测的颜色, 整数型
- 返回 (求平方根 (求次方 (取红色值 (被检测颜色) - 取红色值 (检测的颜色), 2) + 求次方 (取绿色值 (被检测颜色) - 取绿色值 (检测的颜色), 2) + 求次方 (取蓝色值 (被检测颜色) - 取蓝色值 (检测的颜色), 2)))
- .子程序 取红色值, 字节型
- .参数 颜色值, 整数型
- 置入代码 ({ 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)
- .子程序 字节型_取最大值, 字节型, , A和B谁大返回谁
- .参数 A, 字节型
- .参数 B, 字节型
- 置入代码 ({ 138, 69, 8, 138, 101, 12, 56, 196, 118, 2, 138, 196, 15, 182, 192, 201, 194, 8, 0 })
- ' mov al,[ebp+8]
- ' mov ah,[ebp+12]
- ' .if ah > al
- ' mov al,ah
- ' .endif
- ' movzx eax,al
- ' leave
- ' retn 8
- 返回 (0)
复制代码 |
|