设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2431|回复: 0
收起左侧

易语言24位位图图片与字节集裸数据互转 位图到字节集裸数据() 字节集裸数据到位图()

[复制链接]
发表于 2020-12-12 11:21:44 | 显示全部楼层 |阅读模式
e1.png

  1. .版本 2
  2. .支持库 BmpOperate

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 位图, 位图
  9. .局部变量 位图2, 位图

  10. 位图.载入文件 (“1.bmp”)
  11. 写到文件 (“1.bin”, 位图到字节集裸数据 (位图))
  12. 写到文件 (“1.bin”, 位图到字节集裸数据 (位图))
  13. 位图2 = 字节集裸数据到位图 (读入文件 (“1.bin”), 64, 64)
  14. 写到文件 (“2.bmp”, 位图2.取位图数据 ())

  15. .子程序 位图到字节集裸数据, 字节集, 公开, 将位图点阵数据提取成字节集裸数据,失败返回空字节集
  16. .参数 位图, 位图, , 仅支持24位位图转换
  17. .局部变量 宽, 整数型
  18. .局部变量 高, 整数型
  19. .局部变量 返回值, 字节集
  20. .局部变量 Y, 整数型
  21. .局部变量 X, 整数型
  22. .局部变量 Z, 整数型
  23. .局部变量 颜色值, 整数型

  24. 宽 = 位图.取宽度 ()
  25. 高 = 位图.取高度 ()
  26. .如果真 (宽 ≤ 0 或 高 ≤ 0)
  27.     返回 ({  })
  28. .如果真结束
  29. 返回值 = 取空白字节集 (宽 × 高 × 3)
  30. .变量循环首 (0, 高 - 1, 1, Y)
  31.     .变量循环首 (0, 宽 - 1, 1, X)
  32.         颜色值 = 位图.取某点颜色 (X, Y)
  33.         Z = Z + 1
  34.         返回值 [Z] = 取红色值 (颜色值)
  35.         Z = Z + 1
  36.         返回值 [Z] = 取绿色值 (颜色值)
  37.         Z = Z + 1
  38.         返回值 [Z] = 取蓝色值 (颜色值)
  39.     .变量循环尾 ()
  40. .变量循环尾 ()
  41. 返回 (返回值)


  42. .子程序 字节集裸数据到位图, 位图, 公开, 将字节集裸数据还原成24位位图,失败返回空位图
  43. .参数 裸数据, 字节集, , 裸数据字节=宽*高*3 不匹配将失败
  44. .参数 宽, 整数型, , 裸数据不包括位图宽高数据,需要手动指定
  45. .参数 高, 整数型, , 错误的宽高会造成图片还原错误
  46. .局部变量 返回值, 位图
  47. .局部变量 尺寸, 整数型
  48. .局部变量 X, 整数型
  49. .局部变量 Y, 整数型
  50. .局部变量 Z, 整数型

  51. 尺寸 = 取字节集长度 (裸数据)
  52. .判断开始 (宽 ≤ 0 或 高 ≤ 0 或 尺寸 ≠ 宽 × 高 × 3)
  53.     返回 (返回值)
  54. .判断 (返回值.创建 (宽, 高, 24, ) = 假)
  55.     返回 (返回值)
  56. .默认

  57. .判断结束
  58. .变量循环首 (0, 高 - 1, 1, Y)
  59.     .变量循环首 (0, 宽 - 1, 1, X)
  60.         返回值.置某点颜色 (X, Y, 取颜色值 (裸数据 [Z + 1], 裸数据 [Z + 2], 裸数据 [Z + 3]))
  61.         Z = Z + 3
  62.     .变量循环尾 ()
  63. .变量循环尾 ()
  64. 返回 (返回值)

  65. .子程序 取红色值, 字节型
  66. .参数 颜色值, 整数型

  67. 置入代码 ({ 139, 69, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  68. ' mov eax,[ebp+8]
  69. ' and eax,255
  70. ' leave
  71. ' retn 4
  72. 返回 (0)

  73. .子程序 取绿色值, 字节型
  74. .参数 颜色值, 整数型

  75. 置入代码 ({ 139, 69, 8, 193, 232, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  76. ' mov eax,[ebp+8]
  77. ' shr eax,8
  78. ' and eax,255
  79. ' leave
  80. ' retn 4
  81. 返回 (0)

  82. .子程序 取蓝色值, 字节型
  83. .参数 颜色值, 整数型

  84. 置入代码 ({ 139, 69, 8, 193, 232, 16, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  85. ' mov eax,[ebp+8]
  86. ' shr eax,16
  87. ' and eax,255
  88. ' leave
  89. ' retn 4
  90. 返回 (0)
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-26 04:55 , Processed in 1.805103 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表