Sample code for 30+ languages & platforms
PureBasic

Extract data:image/png;base64 from HTML

See more Base64 Examples

Demonstrates how to extract base64 image data from HTMl and save to files.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkBinData.pb"

Procedure ChilkatExample()

    success.i = 0

    sb.i = CkStringBuilder::ckCreate()
    If sb.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    sbFilename.i = CkStringBuilder::ckCreate()
    If sbFilename.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    index.i = 1

    success = CkStringBuilder::ckLoadFile(sb,"qa_data/html/oresp body.txt","utf-8")
    ; Assume success.
    Debug "length = " + Str(CkStringBuilder::ckLength(sb))

    mayHaveMore.i = 1
    While mayHaveMore = 1

        ; Get the base64 between the 1st occurrence "data:image/png;base64," and "'"
        sBase64.s = CkStringBuilder::ckGetBetween(sb,"data:image/png;base64,","'")

        ; If nothing is found, then we'll exit the loop because there are no more.
        mayHaveMore = CkStringBuilder::ckLastMethodSuccess(sb)

        If CkStringBuilder::ckLastMethodSuccess(sb) = 1
            ; Found something.
            ; Load into bd and save.
            success = CkBinData::ckLoadEncoded(bd,sBase64,"base64")

            CkStringBuilder::ckSetString(sbFilename,"qa_output/png_")
            CkStringBuilder::ckAppendInt(sbFilename,index)
            CkStringBuilder::ckAppend(sbFilename,".png")

            CkBinData::ckWriteFile(bd,CkStringBuilder::ckGetAsString(sbFilename))

            ; Replace "data:image/png;base64" with "data:image-png;base64" so the next iteration finds the next occurrence.
            CkStringBuilder::ckReplaceFirst(sb,"data:image/png;base64","data:image-png;base64")
        EndIf

        index = index + 1
    Wend

    ; Restore our replacements..
    count.i = CkStringBuilder::ckReplace(sb,"data:image-png;base64","data:image/png;base64")

    Debug "All done."


    CkStringBuilder::ckDispose(sb)
    CkBinData::ckDispose(bd)
    CkStringBuilder::ckDispose(sbFilename)


    ProcedureReturn
EndProcedure