excel 从数组创建图片形状

ql3eal8s  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(127)

我试图找到一个创建图片的示例或文档(浮动形状对象)。源应该是数字位图数据,存储在使用外部I/O库获取的VBA数组中。可以使用Excel单元格作为中间存储,但这不是所需的,因为RGB位图数据预计是巨大的。任务本身在类似matlab的环境中看起来非常简单,或者python。但是我就是不知道如何在Excel和VBA中制作而不从文件系统中导入一个独立的图像文件。

bnl4lu3b

bnl4lu3b1#

在存储文件方面,"巨大“是多大?如果你把图像转换成Base64,它将是一个相当琐碎的任务,把它分割成单元格,然后在转换成图像时重新组合它。
或者,您可以将Base64字符串存储在一个标准模块中--我目前正在做同样的事情,但我的图像只能以100 kb的速度输入(最好将其保存为PNG而不是BMP)。
在将Base64字符串转换为图像方面,Windows Image Acquisition COM对象会将字节数组转换为stdPicture图像类型(就我上面的观点而言,它还接受PNG文件...)。以下函数接受Base64字符串,将其转换为字节数组,并返回stdPicture对象:

Function Base64toStdPicture(ByVal Base64Code As String) As StdPicture
    
    Dim ImgVector As Object
    Dim Node      As Object
        
    Set ImgVector = CreateObject("WIA.Vector")
    Set Node = CreateObject("Msxml2.DOMDocument.3.0").createElement("base64")
        
    Node.DataType = "bin.base64"
    Node.Text = Base64Code
    ImgVector.BinaryData = Node.nodeTypedValue
    Set Base64toStdPicture = ImgVector.BinaryData.Picture
        
    Set Node = Nothing
    Set ImgVector = Nothing

End Function

从这一点上,你可以在一个图像控件中调出它,或者将它复制到剪贴板/从剪贴板中复制出来等。

相关问题