设为首页收藏本站帮助中心
查看: 1814|回复: 0
收起左侧

易语言实现将位图、图像、图片、照片裁切、裁剪、切割成任意宫格 (返回逻辑型)

[复制链接]
发表于 2021-2-13 10:46:21 | 显示全部楼层 |阅读模式
本帖最后由 CNWTEPRG 于 2021-2-17 09:50 编辑
输入图片:
输入.png
裁切结果:
1.png 2.png 3.png
4.png 5.png 6.png
7.png 8.png 9.png

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 位图, 位图
  9. .局部变量 输出, 位图, , "0"
  10. .局部变量 计数, 整数型

  11. .如果真 (位图.载入文件 (“in.bmp”) = 假)
  12.     信息框 (“文件 in.bmp 无法载入,请确定文件是否存在,格式是否正确。”, 0, , )
  13.     结束 ()
  14. .如果真结束
  15. 检查 (位图_任意宫格切割 (位图, 3, 3, 输出))
  16. .计次循环首 (取数组成员数 (输出), 计数)
  17.     写到文件 (到文本 (计数) + “.bmp”, 输出 [计数].取位图数据 ())
  18. .计次循环尾 ()

  19. .子程序 位图_任意宫格切割, 逻辑型, 公开
  20. .参数 欲切割位图, 位图
  21. .参数 水平宫格, 整数型, , 图像的宽度必须能与该值整除
  22. .参数 垂直宫格, 整数型, , 图像的高度必须能与该值整除
  23. .参数 输出, 位图, 数组, 切割后的位图通过此数组传出
  24. .局部变量 宽度, 整数型
  25. .局部变量 高度, 整数型
  26. .局部变量 水平切, 位图, , "0"
  27. .局部变量 垂直切, 位图, , "0"
  28. .局部变量 垂直索引, 整数型
  29. .局部变量 水平索引, 整数型

  30. 宽度 = 欲切割位图.取宽度 ()
  31. 高度 = 欲切割位图.取高度 ()
  32. 清除数组 (输出)
  33. .如果真 (水平宫格 = 0 或 垂直宫格 = 0 或 宽度 % 水平宫格 ≠ 0 或 高度 % 垂直宫格 ≠ 0)
  34.     返回 (假)
  35. .如果真结束
  36. .如果真 (位图_竖切横刀 (欲切割位图, 垂直宫格, 水平切) = 假)
  37.     返回 (假)
  38. .如果真结束
  39. .计次循环首 (垂直宫格, 垂直索引)
  40.     .如果真 (位图_横切竖刀 (水平切 [垂直索引], 水平宫格, 垂直切) = 假)
  41.         返回 (假)
  42.     .如果真结束
  43.     .计次循环首 (水平宫格, 水平索引)
  44.         加入成员 (输出, 垂直切 [水平索引])
  45.     .计次循环尾 ()
  46. .计次循环尾 ()
  47. 返回 (真)

  48. .子程序 位图_横切竖刀, 逻辑型
  49. .参数 位图, 位图
  50. .参数 数量, 整数型, , 图像的宽度必须能与该值整除
  51. .参数 输出, 位图, 参考 数组
  52. .局部变量 高度, 整数型
  53. .局部变量 宽度, 整数型
  54. .局部变量 子宽, 整数型
  55. .局部变量 位深度, 整数型
  56. .局部变量 计数, 整数型
  57. .局部变量 X, 整数型
  58. .局部变量 Y, 整数型

  59. 宽度 = 位图.取宽度 ()
  60. 高度 = 位图.取高度 ()
  61. 位深度 = 位图.取位深度 ()
  62. .如果真 (数量 = 0 或 宽度 % 数量 ≠ 0)
  63.     返回 (假)
  64. .如果真结束
  65. 子宽 = 宽度 ÷ 数量
  66. 重定义数组 (输出, 假, 数量)
  67. .计次循环首 (数量, 计数)
  68.     .如果真 (输出 [计数].创建 (子宽, 高度, 位深度, #白色) = 假)
  69.         返回 (假)
  70.     .如果真结束
  71.     .变量循环首 (0, 子宽 - 1, 1, X)
  72.         .变量循环首 (0, 高度 - 1, 1, Y)
  73.             .如果真 (输出 [计数].置某点颜色 (X, Y, 位图.取某点颜色 (X + 子宽 × (计数 - 1), Y)) = 假)
  74.                 返回 (假)
  75.             .如果真结束

  76.         .变量循环尾 ()
  77.     .变量循环尾 ()
  78. .计次循环尾 ()
  79. 返回 (真)


  80. .子程序 位图_竖切横刀, 逻辑型
  81. .参数 位图, 位图
  82. .参数 数量, 整数型, , 图像的宽度必须能与该值整除
  83. .参数 输出, 位图, 参考 数组
  84. .局部变量 宽度, 整数型
  85. .局部变量 高度, 整数型
  86. .局部变量 子高, 整数型
  87. .局部变量 位深度, 整数型
  88. .局部变量 计数, 整数型
  89. .局部变量 X, 整数型
  90. .局部变量 Y, 整数型

  91. 宽度 = 位图.取宽度 ()
  92. 高度 = 位图.取高度 ()
  93. 位深度 = 位图.取位深度 ()
  94. .如果真 (高度 % 数量 ≠ 0)
  95.     返回 (假)
  96. .如果真结束
  97. 子高 = 高度 ÷ 数量
  98. 重定义数组 (输出, 假, 数量)
  99. .计次循环首 (数量, 计数)
  100.     .如果真 (输出 [计数].创建 (宽度, 子高, 位深度, #白色) = 假)
  101.         返回 (假)
  102.     .如果真结束
  103.     .变量循环首 (0, 宽度 - 1, 1, X)
  104.         .变量循环首 (0, 子高 - 1, 1, Y)
  105.             .如果真 (输出 [计数].置某点颜色 (X, Y, 位图.取某点颜色 (X, Y + 子高 × (计数 - 1))) = 假)
  106.                 返回 (假)
  107.             .如果真结束

  108.         .变量循环尾 ()
  109.     .变量循环尾 ()
  110. .计次循环尾 ()
  111. 返回 (真)
复制代码

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则