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