为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

图像句柄与图片互取易语言源码

三叶资源网 2019-05-10 09:33:03 易语言例程 2158 ℃ 2 评论

从一个多功能模块提取的,并优化确认无错的图形句柄与图像数据互换源码

@lxwyyy

.版本 2

.程序集 图像操作

.子程序 get_Handle, 整数型
.参数 IPicture, 整数型
.参数 pHandle, 整数型, 参考

置入代码 ({ 139, 69, 8, 139, 0, 131, 192, 12, 139, 0, 255, 117, 12, 255, 117, 8, 255, 208 })
返回 (pHandle)


.子程序 Release, , , 释放对象
.参数 IPicture, 整数型

置入代码 ({ 139, 69, 8, 139, 0, 131, 192, 8, 139, 0, 255, 117, 8, 255, 117, 8, 255, 208 })

.子程序 图像_图片句柄取图片, 字节集, 公开, 返回的图片格式,固定为位图。
.参数 hBitmap, 整数型
.局部变量 Bitmap, 位图结构, , , 244
.局部变量 Resource, 字节集, , , 240
.局部变量 位图头, 位图头, , , 232
.局部变量 buf, 字节集
.局部变量 hMemDC, 整数型, , , 252
.局部变量 位图信息, 位图信息, , , 248
.局部变量 结构信息, 字节集, , , 236

GetObject (hBitmap, 24, Bitmap)
hMemDC = CreateCompatibleDC (0)
位图信息.结构大小 = 40
GetDIBits_BimapInfo (hMemDC, hBitmap, 0, 0, 0, 位图信息, 0)
Resource = 取空白字节集 (位图信息.图像数据大小)
位图信息.压缩方式 = 0
位图信息.位深度 = 24
GetDIBits (hMemDC, hBitmap, 0, Bitmap.位图高度, Resource, 位图信息, 0)
结构信息 = 取空白字节集 (位图信息.结构大小)
CopyMemory_位图信息 (结构信息, 位图信息, 位图信息.结构大小)
位图头.位图类别 = 19778  ' 取字节集数据 (到字节集 (“BM”), 2, )
位图头.数据地址 = 54
位图头.图像大小 = 54 + 位图信息.图像数据大小
连续赋值 (0, 位图头.bfReserved1, 位图头.bfReserved2)
DeleteDC (hMemDC)
buf = 取空白字节集 (位图头.图像大小)
CopyMemory_位图头 (buf, 位图头, 14)
CopyMemory_zj_zjj (buf [15], 结构信息 + Resource, 位图头.图像大小 - 14)
返回 (buf)

.子程序 图像_取图片句柄, 整数型, 公开, 支持bmp、gif、jpg、cur、ico等。感谢叮咚茶提供的极强悍源码,没有这个函数整个模块没法做了。。。
.参数 图形数据, 字节集
.参数 输出宽度, 整数型, 可空
.参数 输出高度, 整数型, 可空
.局部变量 BinLen, 整数型
.局部变量 hMem, 整数型
.局部变量 lpMem, 整数型
.局部变量 IID_IPicture, 字节集
.局部变量 Stream, 整数型
.局部变量 Subaddr, 整数型
.局部变量 Handle, 整数型
.局部变量 picobj, 整数型
.局部变量 ret, 整数型

置入代码 ({ 139, 69, 8, 139, 0, 139, 64, 4, 137, 69, 248 })  ' BinLen = 取字节集长度 (图形数据)
hMem = GlobalAlloc (66, BinLen)
.如果真 (hMem ≠ 0)
    lpMem = GlobalLock (hMem)
    .如果真 (lpMem ≠ 0)
        置入代码 ({ 139, 125, 244, 139, 117, 8, 139, 54, 131, 198, 8, 139, 77, 248, 243, 164 })  ' CopyMemory_整数_字节集 (lpMem, 图形数据, BinLen)
        GlobalUnlock (hMem)
        .如果真 (CreateStreamOnHGlobal (hMem, 0, Stream) = 0)
            IID_IPicture = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
            .如果真 (CLSIDFromString ({ 123, 0, 55, 0, 66, 0, 70, 0, 56, 0, 48, 0, 57, 0, 56, 0, 48, 0, 45, 0, 66, 0, 70, 0, 51, 0, 50, 0, 45, 0, 49, 0, 48, 0, 49, 0, 65, 0, 45, 0, 56, 0, 66, 0, 66, 0, 66, 0, 45, 0, 48, 0, 48, 0, 65, 0, 65, 0, 48, 0, 48, 0, 51, 0, 48, 0, 48, 0, 67, 0, 65, 0, 66, 0, 125, 0, 0, 0 }, IID_IPicture) = 0)
                .如果真 (OleLoadPicture (Stream, BinLen, 1, IID_IPicture, picobj) = 0)
                    get_Handle (picobj, Handle)
                    ret = CopyImage (Handle, 0, 0, 0, 4)
                    DeleteObject (Handle)
                    Release (picobj)
                .如果真结束

            .如果真结束

        .如果真结束

    .如果真结束
    GlobalFree (hMem)
.如果真结束
返回 (ret)

.子程序 图像_置图片尺寸, 字节集, 公开, 返回新的图片数据。
.参数 原图片, 字节集
.参数 像素X, 整数型, 可空, 留空默认保持原大小,下同。
.参数 像素Y, 整数型, 可空
.局部变量 hBitmap, 整数型
.局部变量 Bitmap, 位图结构
.局部变量 数据, 字节集
.局部变量 ret, 整数型

.如果真 (原图片 = {  })
    返回 ({  })
.如果真结束
hBitmap = 图像_取图片句柄 (原图片)
GetObject (hBitmap, 24, Bitmap)
.如果真 (像素X = 0)
    像素X = Bitmap.位图宽度
.如果真结束
.如果真 (像素Y = 0)
    像素Y = Bitmap.位图高度
.如果真结束
.如果真 (像素Y ≤ 0 或 像素X ≤ 0)
    返回 (原图片)
.如果真结束
ret = CopyImage (hBitmap, 0, 像素X, 像素Y, 4)
数据 = 图像_图片句柄取图片 (ret)
DeleteObject (ret)
DeleteObject (hBitmap)
返回 (数据)

.子程序 图像_取图片宽度, 整数型, 公开, 支持bmp、gif、jpg、cur、ico等,不支持某些格式的图片(如png),请先转换为bmp。
.参数 图片, 字节集
.局部变量 hBitmap, 整数型
.局部变量 Bitmap, 位图结构

.如果真 (图片 = {  })
    返回 (0)
.如果真结束
hBitmap = 图像_取图片句柄 (图片)
GetObject (hBitmap, 24, Bitmap)
DeleteObject (hBitmap)
返回 (Bitmap.位图宽度)

.子程序 图像_取图片高度, 整数型, 公开, 支持bmp、gif、jpg、cur、ico等,不支持某些格式的图片(如png),请先转换为bmp。
.参数 图片, 字节集
.局部变量 hBitmap, 整数型
.局部变量 Bitmap, 位图结构

.如果真 (图片 = {  })
    返回 (0)
.如果真结束
hBitmap = 图像_取图片句柄 (图片)
GetObject (hBitmap, 24, Bitmap)
DeleteObject (hBitmap)
返回 (Bitmap.位图高度)
文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有2位网友发表了看法:

  • 静编

    静编  评论于 [2020-03-17 12:51:42]  回复

    图像句柄

  • 易语言

    易语言  评论于 [2020-04-17 21:51:16]  回复

    易语言,读取图片,位图数据

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
支持库教程快捷回复WebUIQQ网页登录E2EE字符串加密界面UI局域网点歌系统ZwQuerySystemInformation迅雷播放器引擎数组剖析自绘旋转图片HOOK项目揭秘火山调用jarHTML5布局之路AES高效加解密POST教程图片切割HttpWatch
最新评论