|
输入图片:
滤镜效果:
- .版本 2
- .支持库 BmpOperate
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 位图, 位图
- .如果真 (位图.载入文件 (“in.bmp”) = 假)
- 信息框 (位图.取错误信息 (), 0, , )
- 结束 ()
- .如果真结束
- 写到文件 (“out.bmp”, 位图_怀旧滤镜 (位图).取位图数据 ())
- .子程序 位图_怀旧滤镜, 位图
- .参数 位图, 位图
- .局部变量 宽, 整数型
- .局部变量 高, 整数型
- .局部变量 X, 整数型
- .局部变量 Y, 整数型
- .局部变量 返回值, 位图
- 宽 = 位图.取宽度 ()
- 高 = 位图.取高度 ()
- 返回值.创建 (宽, 高, 位图.取位深度 (), #绿色)
- .变量循环首 (0, 宽 - 1, 1, X)
- .变量循环首 (0, 高 - 1, 1, Y)
- 返回值.置某点颜色 (X, Y, 颜色_怀旧滤镜 (位图.取某点颜色 (X, Y)))
- .变量循环尾 ()
- .变量循环尾 ()
- 返回 (返回值)
- .子程序 颜色_怀旧滤镜, 整数型
- .参数 颜色, 整数型
- .局部变量 R, 字节型
- .局部变量 G, 字节型
- .局部变量 B, 字节型
- .局部变量 RR, 双精度小数型
- .局部变量 GG, 双精度小数型
- .局部变量 BB, 双精度小数型
- R = 取红色值 (颜色)
- G = 取绿色值 (颜色)
- B = 取蓝色值 (颜色)
- RR = 0.393 × R + 0.769 × G + 0.189 × B
- GG = 0.349 × R + 0.686 × G + 0.168 × B
- BB = 0.272 × R + 0.534 × G + 0.131 × B
- RR = 双精度小数型_限制大小 (RR, 0, 255)
- GG = 双精度小数型_限制大小 (GG, 0, 255)
- BB = 双精度小数型_限制大小 (BB, 0, 255)
- 返回 (取颜色值 (RR, GG, BB))
- .子程序 取红色值, 字节型
- .参数 颜色值, 整数型
- 置入代码 ({ 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)
- .子程序 双精度小数型_限制大小, 双精度小数型
- .参数 值, 双精度小数型
- .参数 最小值, 双精度小数型, , 值小于最小值,返回最小值
- .参数 最大值, 双精度小数型, , 值大于最大值,返回最大值
- 返回 (选择 (值 < 最小值, 最小值, 选择 (值 > 最大值, 最大值, 值)))
复制代码 |
|