VB下载图片,图片内存变大了
请各位高手指点,我从服务器下载的图片是37.1KB,下载到客户端变成了1.87M。。。。vF = ADPicDir() & "\" & Val("" & nbad(i).nbad_id) & ".jpg"
url = "http://wb.54695.cn/" & nbad(i).nbad_adpicUrl
byt() = Inet1.OpenURL(url, icByteArray)
Picture1.Picture = ShowPictureFromStream(byt)
SavePicture Picture1.Picture, vF
-------------------------------------------------------------------------------------------------
'显示图片
Public Function ShowPictureFromStream(ByRef bPic() As Byte) As StdPicture
Dim IID_IPicture As GUID
Dim IStm As stdole.IUnknown, IPic As IPicture
Dim PicW As Long, PicH As Long
If CreateStreamOnHGlobal(VarPtr(bPic(0)), 1, IStm) = ERROR_SUCCESS Then
If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture) = ERROR_SUCCESS Then
If OleLoadPicture(ByVal ObjPtr(IStm), UBound(bPic) + 1, 0, IID_IPicture, IPic) = ERROR_SUCCESS Then
' PicW = Me.ScaleX(IPic.Width, vbHimetric, vbPixels)
' PicH = Me.ScaleY(IPic.Height, vbHimetric, vbPixels)
'IPic.Render CLng(Me.hDC), 0, 0, CLng(PicW), CLng(PicH), 0, IPic.Height, IPic.Width, -IPic.Height, ByVal 0&
Set ShowPictureFromStream = IPic
End If
End If
Set IStm = Nothing
End If
Erase bPic
End Function
存成了BMP了吧 没有,图片都是jpg SavePicture 语句
从对象或控件(如果有一个与其相关)的 Picture 或 Image 属性中将图形保存到文件中。
语法
SavePicture picture, stringexpression
SavePicture 语句的语法包含下面部分:
参数 描述
picture 产生图形文件的 PictureBox 控件或 Image 控件。
stringexpression 欲保存的图形文件名。
说明
无论在设计时还是运行时图形从文件加载到对象的 Picture 属性,而且它是位图、图标、元文件或增强元文件,则图形将以原始文件同样的格式保存。如果它是 GIF 或 JPEG 文件,则将保存为位图文件。
Image 属性中的图形总是以位图的格式保存而不管其原始格式。
SavePicture存的就是位图。 这样就不会变大
vF = ADPicDir() & "\" & Val("" & nbad(i).nbad_id) & ".jpg"
url = "http://wb.54695.cn/" & nbad(i).nbad_adpicUrl
byt() = Inet1.OpenURL(url, icByteArray)
Picture1.Picture = ShowPictureFromStream(byt)
' 注意下面
Open vF For Binary As #1
Put #1,1,byt
Close #1
楼上的方法不行呢,图片还是变大 楼上的方法不行呢,图片还是变大 楼上的方法不行呢,图片还是变大 SavePicture只能保存为BMP格式,即使你指定了JPG后缀也没用的,格式依然是BMP的,不信你用acdsee之类的看图软件打开图片看格式就知道了. 用 OpenURL 方法保存到文件
如果需要将通过 OpenURL 方法获取的数据保存到文件,可以使用 Open、Put 和 Close 语句,如下面的代码所示。该示例先将获得的二进制文件传入 Byte 数组,然后将该数据保存到磁盘中:
Dim strURL As String
Dim bData() As Byte '数据变量
Dim intFile As Integer '可用文件变量
strURL = _
"ftp://ftp.microsoft.com/Softlib/Softlib.e xe"
intFile = FreeFile() '将 intFile 设置为未使用的文件
' OpenURL 方法的结果首先传入 Byte 数组,
'然后将 Byte 数组保存到磁盘。
bData() = Inet1.OpenURL(strURL, icByteArray)
Open "C:\Temp\Softlib.e xe" For Binary Access Write _
As #intFile
Put #intFile, , bData()
Close #intFile
补充:VB , API