Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, Xml;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
bd: HCkBinData;
x: PWideChar;
xml: HCkXml;
gifBase64: PWideChar;

begin
success := False;

bd := CkBinData_Create();

// I created an extra-small GIF image for this example..
success := CkBinData_LoadFile(bd,'qa_data/gif/xsmall.gif');
if (success <> True) then
  begin
    Memo1.Lines.Add('Failed to load GIF image file.');
    Exit;
  end;

// Show GIF bytes as base64:
Memo1.Lines.Add(CkBinData__getEncoded(bd,'base64'));

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

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

xml := CkXml_Create();
success := CkXml_LoadXml(xml,x);

// Get the base64 string:
gifBase64 := CkXml__getChildContent(xml,'def');

Memo1.Lines.Add(gifBase64);

// Load bd with the base64 decoded bytes.  
CkBinData_Clear(bd);
CkBinData_AppendEncoded(bd,gifBase64,'base64');

// Save to a GIF file.
success := CkBinData_WriteFile(bd,'qa_output/xsmall.gif');

CkBinData_Dispose(bd);
CkXml_Dispose(xml);

end;