DataFlex
DataFlex
Decode Base64 Image String (GIF, JPG, etc.) and Save to File
I have an XML response that includes a base 64 encoded image string (UPS label). It's a huge string and I need to save it as a gif file on my users pc.This example shows how to do it..
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoBd
String x
Handle hoXml
String sGifBase64
String sTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
// I created an extra-small GIF image for this example..
Get ComLoadFile Of hoBd "qa_data/gif/xsmall.gif" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load GIF image file."
Procedure_Return
End
// Show GIF bytes as base64:
Get ComGetEncoded Of hoBd "base64" To sTemp1
Showln sTemp1
// This particular GIF in base64 is this:
// R0lGODlhBQAFAMQAAAAAAP////z8/PHx8evr6+jo6OHh4d7e3sPDw8LCwpqamo2NjWxsbGRkZFpaWk1NTUtLS0hISCwsLCQkJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAFAAUAAAUTYCAYQUBAU1lI0TIgztE8jFImIQA7
// Let's begin with an XML string:
Move "<abc><def>R0lGODlhBQAFAMQAAAAAAP////z8/PHx8evr6+jo6OHh4d7e3sPDw8LCwpqamo2NjWxsbGRkZFpaWk1NTUtLS0hISCwsLCQkJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAFAAUAAAUTYCAYQUBAU1lI0TIgztE8jFImIQA7</def></abc>" To x
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXml Of hoXml x To iSuccess
// Get the base64 string:
Get ComGetChildContent Of hoXml "def" To sGifBase64
Showln sGifBase64
// Load bd with the base64 decoded bytes.
Get ComClear Of hoBd To iSuccess
Get ComAppendEncoded Of hoBd sGifBase64 "base64" To iSuccess
// Save to a GIF file.
Get ComWriteFile Of hoBd "qa_output/xsmall.gif" To iSuccess
End_Procedure