C
C
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 C Downloads
#include <C_CkStringBuilder.h>
#include <C_CkBinData.h>
void ChilkatSample(void)
{
BOOL success;
HCkStringBuilder sb;
HCkBinData bd;
HCkStringBuilder sbFilename;
int index;
BOOL mayHaveMore;
const char *sBase64;
int count;
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.
printf("length = %d\n",CkStringBuilder_getLength(sb));
mayHaveMore = TRUE;
while (mayHaveMore == TRUE) {
// 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) {
// 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");
}
index = index + 1;
}
// Restore our replacements..
count = CkStringBuilder_Replace(sb,"data:image-png;base64","data:image/png;base64");
printf("All done.\n");
CkStringBuilder_Dispose(sb);
CkBinData_Dispose(bd);
CkStringBuilder_Dispose(sbFilename);
}