Results 1 to 6 of 6

Thread: [RESOLVED] Base64 problem

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Mar 2006
    Posts
    186

    Resolved [RESOLVED] Base64 problem

    I've wasted whole day today trying to figure out whats wrong with this, yet no luck. I have a base64 encoded picture. It perfectly converts back into a picture file when I convert it with PHP, yet every attempt to convert it with VB6 returns me an picture with blank picture and correct file size. I've tested pretty much all suggestions here on forum and on PSC. Had a lot of fun testing though, tired.. but will give it another hour or so.

    What I need is someone to test the base64 code on your machine, as I suspect that something is wrong on my end. I've successfully tested plain text conversions back and forth, but this picture file just drives me nutts

    Here's the encoded for a test:
    Code:
    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
    and here's what it should look after decoding. See if you can decode it back to real picture with VB6.
    Name:  test.jpg
Views: 351
Size:  5.4 KB

    You can test PHP conversion here: http://www.mobilefish.com/services/base64/base64.php


    Thank you all in advance

  2. #2

    Thread Starter
    Addicted Member
    Join Date
    Mar 2006
    Posts
    186

    Re: Base64 problem

    Forgot to mention, it does work with Crypt32.dll, but not with pure VB6 code:
    Code:
    Option Explicit
    'egl1044
    'WinXP or later
    Private Const CRYPT_STRING_BASE64 As Long = &H1&
    
    Private Declare Function CryptStringToBinaryW Lib "Crypt32.dll" ( _
      ByVal pszString As Long, _
      ByVal cchString As Long, _
      ByVal dwFlags As Long, _
      ByVal pbBinary As Long, _
      ByRef pcbBinary As Long, _
      ByVal pdwSkip As Long, _
      ByVal pdwFlags As Long) As Long
    
    Public Function FromBase64String(ByVal data As String) As Byte()
      Dim Buffer() As Byte
      Dim dwBinaryBytes As Long
      dwBinaryBytes = LenB(data)
      ReDim Buffer(dwBinaryBytes - 1) As Byte
      If CryptStringToBinaryW(StrPtr(data), LenB(data), CRYPT_STRING_BASE64, _
        VarPtr(Buffer(0)), dwBinaryBytes, 0, 0) Then
        ReDim Preserve Buffer(dwBinaryBytes - 1) As Byte
        FromBase64String = Buffer
      End If
      Erase Buffer
    End Function
    
    Private Sub Command1_Click()
      Dim image() As Byte, iFile
      image() = FromBase64String(Text1.Text) 'sure.
    '  Debug.Print StrConv(image, vbUnicode)
      
        iFile = FreeFile
        Open App.Path & "\test.jpg" For Binary As #iFile
        Put #iFile, 1, image
        Close #iFile
    End Sub
    What I'm trying is a pure VB6 code without any DLLs.

  3. #3
    PowerPoster dilettante's Avatar
    Join Date
    Feb 2006
    Posts
    24,487

    Re: Base64 problem

    What do you mean "without any DLLs???"

    That's a system DLL, so there is little reason not to use it. A lot of the "pure VB" examples out there are horribly flawed, and besides they don't run as fast so why reinvent the wheel?

    Anyway, here's one that ought to at least work properly. My guess is you were tripping over character sets.

    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    Attached Files Attached Files
    Last edited by dilettante; May 13th, 2011 at 09:37 PM.

  4. #4

    Thread Starter
    Addicted Member
    Join Date
    Mar 2006
    Posts
    186

    Re: Base64 problem

    Hmm, may be you right about char sets. I will use DLL for now.

  5. #5
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: [RESOLVED] Base64 problem

    Code:
    Private Sub cmdDecodeAPI_Click()
        With New WIA.Vector
            .BinaryData = CryptoBase64.Decode(txtBase64.Text)
            Set imgDecoded.Picture = .Picture
        End With
        txtBase64.SetFocus
    End Sub
    
    Private Sub cmdDecodeVB_Click()
        With New WIA.Vector
            .BinaryData = VBase64.Decode(StrConv(txtBase64.Text, vbFromUnicode))
            Set imgDecoded.Picture = .Picture
        End With
        txtBase64.SetFocus
    End Sub
    Where's the WIA.Vector?


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  6. #6
    PowerPoster dilettante's Avatar
    Join Date
    Feb 2006
    Posts
    24,487

    Re: [RESOLVED] Base64 problem

    WIA 2.0 was a Microsoft add-on for VB6 and scripting that came out back around 2002. It requires XP (SP1 I think) and is included in Vista and beyond. This (and the short-lived original WIA) replaced the old Kodak Imaging library that was in Win9x.

    Ahh, here's the XP download, they still have it!

    Windows® Image Acquisition Automation Library v2.0 Tool: Image acquisition and manipulation component for VB and scripting

    Tons of these kinds of things were produced between 1998 when VB6 came out and 2005 when they decided they were helping to keep VB6 alive. Then a few more came out when Vista was first released back around the end of 2006. Grab as many as you can, they could disappear any time!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width