Sample code for 30+ languages & platforms
Delphi DLL

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 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, StringBuilder;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
sb: HCkStringBuilder;
bd: HCkBinData;
sbFilename: HCkStringBuilder;
index: Integer;
mayHaveMore: Boolean;
sBase64: PWideChar;
count: Integer;

begin
success := False;

sb := CkStringBuilder_Create();
bd := CkBinData_Create();
sbFilename := CkStringBuilder_Create();
index := 1;

success := CkStringBuilder_LoadFile(sb,'qa_data/html/oresp body.txt','utf-8');
// Assume success.
Memo1.Lines.Add('length = ' + IntToStr(CkStringBuilder_getLength(sb)));

mayHaveMore := True;
while mayHaveMore = True do
  begin

    // Get the base64 between the 1st occurrence "data:image/png;base64," and "'"
    sBase64 := CkStringBuilder__getBetween(sb,'data:image/png;base64,','''');

    // If nothing is found, then we'll exit the loop because there are no more.
    mayHaveMore := CkStringBuilder_getLastMethodSuccess(sb);

    if (CkStringBuilder_getLastMethodSuccess(sb) = True) then
      begin
        // Found something.
        // Load into bd and save.
        success := CkBinData_LoadEncoded(bd,sBase64,'base64');

        CkStringBuilder_SetString(sbFilename,'qa_output/png_');
        CkStringBuilder_AppendInt(sbFilename,index);
        CkStringBuilder_Append(sbFilename,'.png');

        CkBinData_WriteFile(bd,CkStringBuilder__getAsString(sbFilename));

        // Replace "data:image/png;base64" with "data:image-png;base64" so the next iteration finds the next occurrence.
        CkStringBuilder_ReplaceFirst(sb,'data:image/png;base64','data:image-png;base64');
      end;

    index := index + 1;
  end;

// Restore our replacements..
count := CkStringBuilder_Replace(sb,'data:image-png;base64','data:image/png;base64');

Memo1.Lines.Add('All done.');

CkStringBuilder_Dispose(sb);
CkBinData_Dispose(bd);
CkStringBuilder_Dispose(sbFilename);

end;