通过图片框大小,取图像局部图片而以,以下代码取之易论坛某位大神的源码,仅供参考
以下为图像取局部代码
.版本 2
.子程序 图像_取局部, 字节集, 公开, 只能是0压缩,并且是8位或8位以上的位图!
.参数 原位图, 字节集
.参数 取出图像左边, 整数型
.参数 取出图像顶边, 整数型
.参数 取出宽度, 整数型
.参数 取出高度, 整数型
.局部变量 图像宽度, 整数型
.局部变量 图像高度, 整数型
.局部变量 图像位数, 整数型
.局部变量 图像压缩, 整数型
.局部变量 新位图, 字节集
.局部变量 新位图信息头, BITMAPINFOHEADER
.局部变量 新位图文件头, 文件头信息_
.局部变量 文件长度, 整数型
.局部变量 i, 整数型
.局部变量 颜色点阵偏移量, 整数型
.局部变量 点的大小, 整数型
.局部变量 颜色表, 字节集
.局部变量 总数据偏移, 整数型
.局部变量 新行宽, 整数型
.局部变量 原行宽, 整数型
.局部变量 时间, 整数型
图像宽度 = 取字节集数据 (取字节集中间 (原位图, 19, 4), #整数型, )
图像高度 = 取字节集数据 (取字节集中间 (原位图, 23, 4), #整数型, )
图像位数 = 取字节集数据 (取字节集中间 (原位图, 29, 2), #短整数型, )
图像压缩 = 取字节集数据 (取字节集中间 (原位图, 31, 4), #整数型, )
.如果真 (图像压缩 ≠ 0)
返回 ({ })
.如果真结束
.如果真 (图像位数 = 32)
颜色点阵偏移量 = 54
点的大小 = 4
.如果真结束
.如果真 (图像位数 = 24)
颜色点阵偏移量 = 54
点的大小 = 3
.如果真结束
.如果真 (图像位数 = 16)
颜色点阵偏移量 = 54
点的大小 = 2
.如果真结束
.如果真 (图像位数 = 8)
颜色点阵偏移量 = 1078
点的大小 = 1
颜色表 = 取字节集中间 (原位图, 55, 1024)
.如果真结束
.如果真 (图像位数 < 8)
输出调试文本 (“错误! 图像位深小于8!”)
返回 ({ })
.如果真结束
.如果真 (取出图像左边 + 取出宽度 > 图像宽度 或 取出图像顶边 + 取出高度 > 图像高度 或 取出图像左边 < 0 或 取出图像顶边 < 0 或 取出宽度 ≤ 0 或 取出高度 ≤ 0)
输出调试文本 (“参数错误!请检查输入的参数!”)
返回 ({ })
.如果真结束
原行宽 = 左移 (右移 (图像宽度 × 图像位数 + 31, 5), 2)
新行宽 = 左移 (右移 (取出宽度 × 图像位数 + 31, 5), 2)
文件长度 = 新行宽 × 取出高度
新位图 = 取空白字节集 (文件长度 + 54 + 取字节集长度 (颜色表))
新位图文件头.文件类型 = 19778
新位图文件头.偏移量 = 颜色点阵偏移量
新位图文件头.结果大小 = 颜色点阵偏移量 + 文件长度
复制内存_复制位图文件头到字节集 (新位图 [1], 新位图文件头, 14)
新位图信息头.biSize = 40
新位图信息头.biWidth = 取出宽度
新位图信息头.biHeight = 取出高度
新位图信息头.biPlanes = 1
新位图信息头.biBitCount = 图像位数
复制内存_复制位图信息头到字节集 (新位图 [15], 新位图信息头, 40)
.如果真 (图像位数 = 8)
复制内存_字节集到字节集 (新位图 [55], 颜色表 [1], 1024)
.如果真结束
总数据偏移 = 原行宽 × (图像高度 - 取出高度 - 取出图像顶边) + 取出图像左边 × 点的大小 ' 总偏移=高偏移+宽偏移
.计次循环首 (取出高度, i)
复制内存_字节集到字节集 (新位图 [(i - 1) × 新行宽 + 颜色点阵偏移量 + 1], 原位图 [颜色点阵偏移量 + 总数据偏移 + (i - 1) × 原行宽 + 1], 新行宽)
处理事件 ()
.计次循环尾 ()
返回 (新位图)
以下为数据类型结构
.版本 2
.数据类型 BITMAPINFOHEADER
.成员 biSize, 整数型
.成员 biWidth, 整数型
.成员 biHeight, 整数型
.成员 biPlanes, 短整数型
.成员 biBitCount, 短整数型
.成员 biCompression, 整数型
.成员 biSizeImage, 整数型
.成员 biXPelsPerMeter, 整数型
.成员 biYPelsPerMeter, 整数型
.成员 biClrUsed, 整数型
.成员 biClrImportant, 整数型
.版本 2
.数据类型 文件头信息_
.成员 文件类型, 短整数型, , , bfType
.成员 结果大小, 整数型, , , bfSize
.成员 保留1, 短整数型, , , bfReserved1保留,必须设置为0
.成员 保留2, 短整数型, , , bfReserved2保留,必须设置为0
.成员 偏移量, , , , bfOffBits从文件头开始到实际的图象数据之间的字节的偏移量
以下为调用API函数
.版本 2
.DLL命令 复制内存_复制位图文件头到字节集, , , "RtlMoveMemory"
.参数 Dest, 字节型, 传址
.参数 Src, 文件头信息_
.参数 len, 整数型
.DLL命令 复制内存_复制位图信息头到字节集, , , "RtlMoveMemory"
.参数 Dest, 字节型, 传址
.参数 Src, BITMAPINFOHEADER
.参数 len, 整数型
.DLL命令 复制内存_字节集到字节集, , , "RtlMoveMemory"
.参数 Dest, 字节型, 传址
.参数 Src, 字节型, 传址
.参数 len, 整数型
前面部分和后面部分是什么意思?图片是2面的?