用bmp保存图片太大了,我能不能直接取得当前PictureBox中的内容(gif,jpg),并将其进行base64编码?(不将图片保存在本地硬盘)!

解决方案 »

  1.   

    http://vbaccelerator.com/home/VB/Code/vbMedia/Using_GDI_Plus/Reading_and_Writing_JPG__PNG__TIF_and_GIF_Files/article.asp
      

  2.   

    http://www.vbaccelerator.com/home/VB/Code/vbMedia/Saving_Pictures_to_JPG/Using_Intel_JPG_Library/article.asp
      

  3.   

    多谢大家答复,我做的是一个象汉王手写邮件的ocx,如果引用第三方控件,在web上发布有没有问题?如何压缩图片?
      

  4.   

    用微软的gdi+和intel的库,没有问题
      

  5.   

    to:hisofty(瘦马)帮个忙!
    http://expert.csdn.net/Expert/topic/2864/2864789.xml?temp=.310589
      

  6.   

    VB本身存不了,需要用控件或者通过API来解决!
      

  7.   

    需要通过控件.而且Windows API也不提供这样的功能.
      

  8.   

    http://expert.csdn.net/Expert/topic/2864/2864789.xml?temp=.310589
    两位老兄帮个忙!!多谢了
      

  9.   

    http://www.showyou.net/mycode/CodeView/CodeView_2163.html
    项目:JPEG图片压缩程序(1/5)
    作者:zyl910
    E-Mail:[email protected]
      

  10.   

    在VB.net里好像可以直接save里选类型的。
      

  11.   

    savepicture picture1.picture "c:\temp.jpg"
      

  12.   

    //用bmp保存图片太大了,我能不能直接取得当前PictureBox中的内容(gif,jpg),并将其进行base64编码?(不将图片保存在本地硬盘)!可以实现:'窗体上两个picturebox(预先为picture1载入一幅图片),一个按钮:'利用IPersistStream接口和IStream接口实现
    '可以从http://www.mvps.org/emorcillo/vb6/tlb/tl_ole.zip下载文件,下载后解压,并注册、引用olelib.tlb
     
    Option ExplicitConst GMEM_MOVEABLE = &H2
    Const GMEM_ZEROINIT = &H40
    Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As LongConst PictureID = &H746C&Private Type PictureHeader
       Magic As Long
       Size As Long
    End Type
    Public Sub Picture2Array(ByVal oObj As StdPicture, aBytes() As Byte)
        Dim oIPS As IPersistStream
        Dim oStream As IStream
        Dim hGlobal As Long
        Dim lPtr As Long
        Dim lSize As Long
        Dim Hdr As PictureHeader
        Set oIPS = oObj
        Set oStream = CreateStreamOnHGlobal(0, True)
        oIPS.Save oStream, True
        hGlobal = GetHGlobalFromStream(oStream)
        lSize = GlobalSize(hGlobal)
        lPtr = GlobalLock(hGlobal)
        If lPtr Then
          lSize = lSize - Len(Hdr)
          ReDim aBytes(0 To lSize - 1)
          MoveMemory aBytes(0), ByVal lPtr + Len(Hdr), lSize
       End If
       GlobalUnlock hGlobal
       Set oStream = NothingEnd Sub
    Public Function Array2Picture(aBytes() As Byte) As StdPicture
    Dim oIPS As IPersistStream
    Dim oStream As IStream
    Dim hGlobal As Long
    Dim lPtr As Long
    Dim lSize As Long
    Dim Hdr As PictureHeader
       Set Array2Picture = New StdPicture
       Set oIPS = Array2Picture
       lSize = UBound(aBytes) - LBound(aBytes) + 1
       hGlobal = GlobalAlloc(GHND, lSize + Len(Hdr))
       If hGlobal Then
          lPtr = GlobalLock(hGlobal)
          Hdr.Magic = PictureID
          Hdr.Size = lSize
          MoveMemory ByVal lPtr, Hdr, Len(Hdr)
          MoveMemory ByVal lPtr + Len(Hdr), aBytes(0), lSize
          GlobalUnlock hGlobal
          Set oStream = CreateStreamOnHGlobal(hGlobal, True)
          oIPS.Load oStream
          Set oStream = Nothing
       End If
    End Function
    Private Sub Command1_Click()
        Dim buff() As Byte
        Picture2Array Picture1.Picture, buff
        '测试
        Set Picture2.Picture = Array2Picture(buff)
    End Sub
      

  13.   

    至于base64编码的实现,你自己搜索吧,代码太多了
      

  14.   

    http://www.aivisoft.net/Zyl910/SaveJPEG2.rar
    绝对精典项目:JPEG图片压缩程序
    作者:zyl910
    E-Mail:[email protected]