当前位置:编程学习 > VB >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,