ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3425|回复: 22

[原创] 升级版LoadPictrue(可加载PNG、网络图片、XP格式ICO)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-9-7 21:00 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:图像处理和GDI
本帖最后由 joforn 于 2022-9-8 23:57 编辑
使用方式:VBA工程中直接导入basLoadPictrue.bas文件即可。
调用方式:请参照VBA帮助中的LoadPictrue函数。
适用文件:xlsx、xlsm、ZIP文件中的图片、可下载的网络图片、压缩格式ICO、PNG及原有函数所支持的图片。
使用说明:
一、由于这个函数是一两年前写的半成品,后来由于工作忙,一直没时间继续,所以现在也还是半成品(对我而言),所以不保证能100%没有Bug。本函数仅限刚好有需要直接加载图片到iPictrue或Pictrue类中的时候使用,不建议作为商用或是装逼等用途。
二、这个函数仅仅只是LoadPictrue的小范围替代使用;
三、函数所用到的源码过于简单,没写注释;
四、本函数仅适用有限的操作系统及Office版本,除32位及64位Windows版本中的Office以外,不支持其它任意版本的Office,请不要尝试在MAC或Linux等常用系统中运行;
五、本函数未经严格测试,仅在Windows 7系统上的Office 2016(繁体64位)、Office 2013(英文32位)及Windows 10上的Office 2016(简体64位)中做过有限的两三次运行测试;

粗糙的技术说明:
由于VBA是基于非常古老的技术平台及操作系统平台开发的,已经过去了几十年,在Windows 98以后,几乎没有任何核心函数的修改。所以VBA内部的核心内容都是非常非常古老。就算是从32位升级64位也仅仅做了最简单的升级,没有其它任何的核心修改。所以像LoadPictrue早已经不再适用现在的图片加载,并且,因为IPictrue也是一个非常古老的类模型,所以无论怎么改,都对PNG、SVG等图形文件非常不友好。本人写的这个LoadPictrue也仅仅只是粗暴的把PNG强行转换,打包装进IPictrue对象中,所以如果是带透明通道的PNG图片或是ICO图片会有些许噪点,有些是图片本身自带的噪点,但因为背景处理及VBA的图片输入函数会显得噪点比较突出。

最后说明:
本模块仅供各位朋友参考,讨论,以期能在本帖内产生更强更好的代码……谢谢。

LoadPictrue.zip

1 MB, 阅读权限: 20, 下载次数: 237

升级版LoadPictrue函数,09月08日更新

评分

10

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-7 21:19 | 显示全部楼层
本帖最后由 joforn 于 2022-9-10 11:43 编辑

新版本预告:

  1. '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  2. '>>>>>>>>   Name:       LaodPictrue                       <<<<<<<<<<<<<<<<<<
  3. '>>>>>>>>   Version:    1.1                               <<<<<<<<<<<<<<<<<<
  4. '>>>>>>>>   Author:     Joforn                            <<<<<<<<<<<<<<<<<<
  5. '>>>>>>>>   Email:      Joforn1@163.com                   <<<<<<<<<<<<<<<<<<
  6. '>>>>>>>>   Facebook:   Joforn1@163.com                   <<<<<<<<<<<<<<<<<<
  7. '>>>>>>>>   QQ:         42978116                          <<<<<<<<<<<<<<<<<<
  8. '>>>>>>>>   Last time : 09/10/2022                        <<<<<<<<<<<<<<<<<<
  9. '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  10. '函数说明: 将本模块导入后,将自动升级当前VBA项目中所有的原LaodPictrue函数,无需修改其它的代码(除非用需要用到本函数1.1版新增功能)。
  11. '           本函数将会覆盖原有函数,由于本函数将代码核心使用的是GDIP函数,所以完美支持原有函数所有功能;
  12. '           本函数新增支持下面几种图形文件格式:PNG、TIFF、压缩格式ICO、32位真彩色透明ICO(这几种格式原有函数均不能加载);
  13. '           为方便使用,本函数可以将FileName参数指定为Byte类型的数组或是stdole.IUnknown类型的Stream流,函数将会直接将上面数据中的图形文件加载成iPictrue对象;
  14. '           为方便使用,本函数可以将FileName参数指定为一个网址URL,函数将自动从指定的网址下载图片并加载。
  15. '1.1版本新增功能:
  16. '           本函数修改了原有函数的LoadPictureConstants类型的Flags,通过使用新的Flags值,可以在输出的iPictrue图片使用新的显示效果:
  17. '           1、可调整原图的对比度;
  18. '           2、可调整原图的亮度;
  19. '           3、可调整原图的曝光度;
  20. '           4、将图片风格化后输出,如:鲜艳、灰度化、老照片等。
复制代码


TA的精华主题

TA的得分主题

发表于 2022-9-7 22:01 | 显示全部楼层
哈哈,我知道版主为什么早不发晚不发,现在这个时间点分享出来了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-7 22:07 | 显示全部楼层
水和米 发表于 2022-9-7 22:01
哈哈,我知道版主为什么早不发晚不发,现在这个时间点分享出来了

扔在硬盘里扔出两年多,没时间弄,原来的代码只能在64位里用用。这几天因为疫情管控,在家里蹲着,刚好看到有人找,就把旧代码稍稍改了改,拿出来给大家玩玩。不是疫情的原因,估计再过几年都不会发出来,实在是没时间玩VBA了。

TA的精华主题

TA的得分主题

发表于 2022-9-7 23:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看看,标识学习,支持原创

TA的精华主题

TA的得分主题

发表于 2022-9-8 00:07 | 显示全部楼层
建议 :
  1. #If VBA7  Then
复制代码

都替换为:
  1. #If VBA7 And Win64 Then
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-8 08:08 | 显示全部楼层
opiona 发表于 2022-9-8 00:07
建议 :  
都替换为:

不需要,VBA 7.0版本中才会有LongPtr这个变量类型。不管是32位还是64位中都有这个变量类型。这个变量类型的长度是变化的,在32位中长度是4字节(等同于Long),在64位中是长度是8字节(等同于Longlong),所以只要判断是否为VBA7就行了。

TA的精华主题

TA的得分主题

发表于 2022-9-8 10:28 | 显示全部楼层
98年呀。。。那么早。。。真希望能稍微更新一下下

TA的精华主题

TA的得分主题

发表于 2022-9-8 12:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这么专业的大神啊,收藏留个印记

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-9 00:00 | 显示全部楼层
一楼附件已经重新上传,本次更新修复了几个致命错误。
新增直接从Byte数组加载图片功能。
新增直接从Stream流中加载图片功能。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-10 12:13 , Processed in 0.045723 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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