Tcl
Tcl
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 Tcl Downloads
load ./chilkat.dll
set success 0
set sb [new_CkStringBuilder]
set bd [new_CkBinData]
set sbFilename [new_CkStringBuilder]
set index 1
set success [CkStringBuilder_LoadFile $sb "qa_data/html/oresp body.txt" "utf-8"]
# Assume success.
puts "length = [CkStringBuilder_get_Length $sb]"
set mayHaveMore 1
while {$mayHaveMore == 1} {
# Get the base64 between the 1st occurrence "data:image/png;base64," and "'"
set sBase64 [CkStringBuilder_getBetween $sb "data:image/png;base64," "'"]
# If nothing is found, then we'll exit the loop because there are no more.
set mayHaveMore [CkStringBuilder_get_LastMethodSuccess $sb]
if {[CkStringBuilder_get_LastMethodSuccess $sb] == 1} then {
# Found something.
# Load into bd and save.
set 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"
}
set index [expr $index + 1]
}
# Restore our replacements..
set count [CkStringBuilder_Replace $sb "data:image-png;base64" "data:image/png;base64"]
puts "All done."
delete_CkStringBuilder $sb
delete_CkBinData $bd
delete_CkStringBuilder $sbFilename