Sample code for 30+ languages & platforms
Lua

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

Lua
local chilkat = require("chilkat")

local bd = chilkat.BinData.new()

-- I created an extra-small GIF image for this example..
local success = bd:load_file("qa_data/gif/xsmall.gif")
if not success then
    print("Failed to load GIF image file.")
    return
end

-- Show GIF bytes as base64:
print(bd:get_encoded("base64"))

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

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

local xml = chilkat.Xml.new()
success = xml:load_xml(x)

-- Get the base64 string:
local gifBase64 = xml:get_child_content("def")

print(gifBase64)

-- Load bd with the base64 decoded bytes.
bd:clear()
bd:append_encoded(gifBase64, "base64")

-- Save to a GIF file.
success = bd:write_file("qa_output/xsmall.gif")