PureBasic
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
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