【发布时间】:2017-07-03 01:45:25
【问题描述】:
已经有很多关于这个错误的帖子,但我似乎找不到解决方案;当以编程方式(使用LoadPicture() 函数)将图片加载到用户窗体上的图像控件时,出现此错误:
运行时错误 481 - 无效图片
和类似的
图片无效
手动加载时的消息。
从我的互联网搜索中,我发现了很多关于这个错误的建议;大多数帖子往往是因为user is uploading a png 或其他无效图像(such as a corrupt jpg),some suggest 我的temp 文件夹已满,others think 病毒是原因(我怀疑最后一个) .
在我的应用程序中,我的图片是
一张jpg(MSDN lists as an acceptable format在他们
LoadPicture()文章的备注部分)没有损坏(至少我可以用windows photoviewer/Chrome/Paint正常查看)
相对较小(例如,它是 ~1MPx 和我测试加载的 200MPx jpeg,没有任何错误)
唯一有点不寻常的是,我是使用以下代码直接从网上下载的:
Public Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long 'api to download files
Sub setPicTest()
Dim tmpImg As MSForms.Image 'create an image control on UserForm1 at runtime
Set tmpImg = UserForm1.Controls.Add("Forms.Image.1")
tmpImg.Picture = getImg("https://s-media-cache-ak0.pinimg.com/originals/22/e2/4d/22e24d3b5703a1c1cc43df5b13f53fd2.png")
End Sub
Function getImg(url As String) As IPictureDisp 'loads a picture from a url
Dim strFile As String 'file save location
strFile = Environ("Temp") & "\Temp.jpg" 'save *as jpeg* in %temp% folder
Debug.Print URLDownloadToFile(0, url, strFile, 0, 0) 'download file to temp folder
Set getImg = LoadPicture(strFile) 'load image -error-
Kill strFile 'clean up temp file
End Function
当我逐步完成时,一切都按预期运行
- 一个空的(没有图片)图像控件出现在我的用户窗体上
- 一个名为
temp.jpg的文件出现在我的临时文件夹中- 此文件似乎没有损坏
但随后代码执行会因错误而中断。这尤其令人惊讶,因为代码对于小缩略图图像一直运行良好,只是这些全分辨率图像似乎不起作用。
【问题讨论】:
-
这是一个png文件。将其重命名为 jpg 将无济于事:)