|
|

本帖最后由 简qt 于 2026-2-13 05:10 编辑
抠图-置颜色-位图操作
引用:精易模块(转换24位图命令)
注意事项:转换出来的确实是已经替换的图片,不过系统会显示白色的底,这是因为位图局限性毕竟是位图替换颜色的,但是图片绝对是ARGB,用看图工具有些是能够正确识别的。
不喜勿喷,如果我能帮助到您,还请给点精币,求求了
|
| 图片_指定颜色变透明 | 字节集 | | |
| 图片 | 字节集 | | | | 参数_目标红 | 字节型 | | | | 参数_目标绿 | 字节型 | | | | 参数_目标蓝 | 字节型 | | | | 容差 | 整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 局_位图 | 位图 | | | | 宽 | 整数型 | | | | 高 | 整数型 | | | | 位图数据 | 字节集 | | | | 位图指针 | 整数型 | | | | 像素指针 | 整数型 | | | | 行宽 | 整数型 | | | | 补位 | 整数型 | | | | x | 整数型 | | | | y | 整数型 | | | | 蓝 | 整数型 | | | | 绿 | 整数型 | | | | 红 | 整数型 | | | | 容差平方 | 整数型 | | | | 目标红整数 | 整数型 | | | | 目标绿整数 | 整数型 | | | | 目标蓝整数 | 整数型 | | | | 新位图数据 | 字节集 | | | | 新位图指针 | 整数型 | | | | 新像素指针 | 整数型 | | | | 新行宽 | 整数型 | | | | 原图结束指针 | 整数型 | | |
如果真 (是否为空 (容差 ))  容差 = 10 容差平方 = 容差 × 容差目标红整数 = 参数_目标红 目标绿整数 = 参数_目标绿 目标蓝整数 = 参数_目标蓝 如果真 (取字节集左边 (图片, 2 ) ≠ { 66, 77 }) 图片 = 图片_到24位图 (图片, ) 局_位图. 载入数据 (图片 )宽 = 局_位图. 取宽度 ()高 = 局_位图. 取高度 ()位图数据 = 局_位图. 取位图数据 ()位图指针 = 取变量数据地址 (位图数据 )原图结束指针 = 位图指针 + 取字节集长度 (位图数据 )行宽 = 宽 × 3 补位 = 位与 (行宽 + 3, -4 ) - 行宽 新行宽 = 宽 × 4 新位图数据 = 创建32位BMP头 (宽, 高 )新位图指针 = 取变量数据地址 (新位图数据 )新像素指针 = 新位图指针 + 54 像素指针 = 位图指针 + 54 变量循环首 (0, 高 - 1, 1, y ) 如果真 (像素指针 + 宽 × 3 - 1 ≥ 原图结束指针 ) 跳出循环 () 变量循环首 (0, 宽 - 1, 1, x )  蓝 = 指针到字节 (像素指针 )  绿 = 指针到字节 (像素指针 + 1 )  红 = 指针到字节 (像素指针 + 2 ) 写内存字节 (新像素指针, 到字节 (蓝 ))  写内存字节 (新像素指针 + 1, 到字节 (绿 ))  写内存字节 (新像素指针 + 2, 到字节 (红 ))   如果 ( (红 - 目标红整数 ) (红 - 目标红整数 ) (绿 - 目标绿整数 ) (绿 - 目标绿整数 ) (蓝 - 目标蓝整数 ) (蓝 - 目标蓝整数 ) ≤ 容差平方 )  写内存字节 (新像素指针 + 3, 0 )  写内存字节 (新像素指针 + 3, 255 )     像素指针 = 像素指针 + 3   新像素指针 = 新像素指针 + 4  变量循环尾 () 像素指针 = 像素指针 + 补位  如果真 (像素指针 ≥ 原图结束指针 ) 跳出循环 ()  变量循环尾 ()返回 (新位图数据 )
出现任何“整数不能转换字节”,统统“到字节”,我能编译不知道为什么?!
补充内容 (2026-2-13 07:20):
.版本 2
.子程序 创建32位BMP头, 字节集, 公开
.参数 宽, 整数型
.参数 高, 整数型
.局部变量 文件头, 字节集
.局部变量 信息头, 字节集
.局部变量 像素...
补充内容 (2026-2-15 18:25):
未名·图片处理 V2.1.1 - 图像处理
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14872603
(出处: 精易论坛)
|
|