Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set bd [new_CkBinData]

# I created an extra-small GIF image for this example..
set success [CkBinData_LoadFile $bd "qa_data/gif/xsmall.gif"]
if {$success != 1} then {
    puts "Failed to load GIF image file."
    delete_CkBinData $bd
    exit
}

# Show GIF bytes as base64:
puts [CkBinData_getEncoded $bd base64]

# This particular GIF in base64 is this:
# R0lGODlhBQAFAMQAAAAAAP////z8/PHx8evr6+jo6OHh4d7e3sPDw8LCwpqamo2NjWxsbGRkZFpaWk1NTUtLS0hISCwsLCQkJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAFAAUAAAUTYCAYQUBAU1lI0TIgztE8jFImIQA7

# Let's begin with an XML string:
set x "<abc><def>R0lGODlhBQAFAMQAAAAAAP////z8/PHx8evr6+jo6OHh4d7e3sPDw8LCwpqamo2NjWxsbGRkZFpaWk1NTUtLS0hISCwsLCQkJP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABQALAAAAAAFAAUAAAUTYCAYQUBAU1lI0TIgztE8jFImIQA7</def></abc>"

set xml [new_CkXml]

set success [CkXml_LoadXml $xml $x]

# Get the base64 string:
set gifBase64 [CkXml_getChildContent $xml "def"]

puts "$gifBase64"

# Load bd with the base64 decoded bytes.  
CkBinData_Clear $bd
CkBinData_AppendEncoded $bd $gifBase64 "base64"

# Save to a GIF file.
set success [CkBinData_WriteFile $bd "qa_output/xsmall.gif"]

delete_CkBinData $bd
delete_CkXml $xml