ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 图什么呢,就图个PNG

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-23 20:22 | 显示全部楼层 |阅读模式
本帖最后由 aman1516 于 2024-11-23 21:38 编辑

是原罪吗,PNG格式图片在不少编程、控件中不受见地,

问题一:能否将工作表中的透明图片导出成真正的PNG图片?
微信截图_20241123201039.png
  1. Sub ExpPng() '问题一:能否将工作表中的透明图片导出成真正的PNG图片?
  2. Dim shp As Shape
  3. For Each shp In ActiveSheet.Shapes
  4. shp.Copy
  5. With ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart
  6. '.Parent.Select
  7. Application.Wait Now + TimeValue("00:00:02")
  8. .ChartArea.Select
  9. .Paste
  10. .Export ThisWorkbook.Path & "\Test_" & shp.Name & ".png" '并非真正的PNG文件
  11. .Parent.Delete
  12. End With
  13. Next
  14. End Sub
复制代码

问题二:能否将工作表透明图片读入到WIA数组中?(当然,如果问题一能解决,问题二就解决了,或另有方法)
  1. Sub WiaShp()    '问题二:能否将工作表透明图片读入到WIA数组中?
  2.     Dim Img 'As ImageFile
  3.     Dim IP 'As ImageProcess
  4.     Dim v 'As Vector
  5.     Dim i 'As Long
  6.     Dim ofile As String, sflie As String
  7.     Set Img = CreateObject("WIA.ImageFile")
  8.     Set IP = CreateObject("WIA.ImageProcess")
  9.     Set shp = ActiveSheet.Shapes("图片 2")
  10.    
  11.     'call ExpPng    '上面问题一方法,将Shp导出为本地PNG,再读入到WIA
  12.    
  13.     '方法二,直接将Shp生成WIA格式的 Img.ARGBData
  14.    
  15.     ofile = ThisWorkbook.Path & "\Bliss.png"
  16.     Img.LoadFile ofile
  17.     Set v = Img.ARGBData
  18.     For i = 1 To v.Count
  19.         'Debug.Print v(i)          'ARGB  (A=xxxx,R=xxx,G=xxx,B=xxx)
  20.         '.......
  21.     Next
  22.     '......
  23. End Sub
复制代码
详见附件,望各位老师赐教: 生成真正的PNG图片.rar (476.25 KB, 下载次数: 7)


TA的精华主题

TA的得分主题

发表于 2024-11-24 10:38 | 显示全部楼层
  1. shp.Copy
  2. 改成
  3. shp.CopyPicture xlPrinter, xlPicture

  4. with里加上去底色边框
  5. .ChartArea.Fill.Visible = False
  6. .ChartArea.Border.LineStyle = xlLineStyleNone
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-24 12:01 来自手机 | 显示全部楼层
其实这些代码你已经有了
copy 从剪贴板获取图片字节
也可以看看我的帖子里 剪切板获取图片字节 有用的wia

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-24 12:10 | 显示全部楼层

还以为要调用PPT去处理呢
----复制到PPT中----另存为图片----PNG 可移植网络图形格式
请教一下,能否一步到位:
方法二,直接将工作表透明的Shp生成WIA格式的 Img.ARGBData 数组?
最终目的是要用WIA对工作表透明图形进行处理

TA的精华主题

TA的得分主题

发表于 2024-11-24 18:21 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2024-11-24 18:43 编辑
aman1516 发表于 2024-11-24 12:10
还以为要调用PPT去处理呢
----复制到PPT中----另存为图片----PNG 可移植网络图形格式
请教一下,能否一 ...

参考一下附件代码!
原代码为GDI(GDI代码已注释)
现修改为WIA

20241123.zip (348 KB, 下载次数: 10)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-24 21:36 | 显示全部楼层
aman1516 发表于 2024-11-24 12:10
还以为要调用PPT去处理呢
----复制到PPT中----另存为图片----PNG 可移植网络图形格式
请教一下,能否一 ...

只看了下Export代码不透明原因,WIA我不会,你看下5楼lss001老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-24 22:17 | 显示全部楼层
lss001 发表于 2024-11-24 18:21
参考一下附件代码!
原代码为GDI(GDI代码已注释)
现修改为WIA

非常感谢提供一个从剪切板获取图片数据的方法;
但里面的的格式转成RGB(BMP)了,所以生成的图片并非PNG透明的(ARGB/RGBA),
而如果WIA从本地读入PNG图片的话,它仍是透明度的
shp.Copy 若改成  shp.CopyPicture xlPrinter, xlPicture ,会出错
同样无法形成透明图片
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 08:46 , Processed in 0.044259 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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