0

I'm trying to convert base64 string to image file in pytho.

base64 string is stored in xml like this

 <WaveFormData>
DQANAA0ADgAOAA4ADgAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAP
AA8ADwAOAA4ADgAOAA4ADwAPAA4ADgAMAAwADAAMAAwADQANAAwACgAKAAkACQAJAAkA
CQAIAAgACAAIAAgACAAIAAgACAAHAAcABgAGAAYABgAFAAUABQAFAAUABQAFAAUABQAF
AAUABQAFAAUABQAFAAUABQAFAAUABQAEAAMAAwADAAMABAAEAAQABAAEAAQABAAEAAQA
BAADAAMAAwAEAAQABAAFAAUAAwADAAMABAAEAAQABAADAAMAAwACAAIAAgACAAMAAwAD
AAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABAAEAAQABQAFAAUABQAHAAcA
CAAIAAgACQAJAAkACwAMAA0ADgAPAA8ADgAOAA4ADQANAA0ADQANAA8ADwAPAA8ADQAK
AAkACAAHAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABAADAAMAAgABAAAA
/v/+//7//v/+//7//v///////////////////wAAAAAAAAAAAAAAAP7//f/6//j/9P/0
//X/AAAUACsATAB3AKIAzwD4ACUBUwF8AZcBigFJAeYAfAAYAMP/jf98/3b/aP9g/2D/
XP9Y/13/Z/92/4f/m/+w/8H/0f/c/+L/5v/s//L/+P/9//7//v/+//7//v8AAAMABQAG
AAcABwAHAAgACAAKAAoACgALAAsACwALAAwADAAMAA0ADwAPAA8AEAAQABEAEQAQABAA
EQASABIAEwATABMAEwAUABQAFQAVABYAFgAYABgAGAAYABoAGgAaABwAHAAcAB4AHwAg
ACAAIQAhACIAIgAjACQAJAAlACYAJwAoACgAKAApACoAKgAqACsAKwAsACwALQAtAC0A
LgAwADAAMAAwADAAMAAxADEAMQAxADEAMQAxADAAMAAwAC4ALgAuAC0ALAArACoAKgAp
ACgAKAAnACYAJQAkACMAIgAhACAAIAAfAB4AHQAdABwAGwAaABoAGgAaABkAGAAYABgA
GAAYABgAFgAVABQAFAATABIAEgASABIAEQARABEAEQARABAADwAOAA4ADAAMAAwADAAM
AA0ADQAOAA4ADgAOAA4ADgANAA0ADQANAA0ADgAOAA4ADgAOAA8ADwAQABAAEAAPAA8A
DwAPABAAEAAQABAAEQARABEAEQARABIAFAAUABMAEwAUABQAFAAVABYAFgAWABYAFgAW
ABUAFQAWABYAFQAVABUAFQAVABYAFwAXABcAFwAXABcAFwAXABcAFgAVABUAFAAUABMA
EwATABMAEwAUABQAEwASABIAEgASABIAEQARABEAEAAQABAAEAAPAA8ADwAPAA4ADgAO
AA4ADgANAA0ADQANAA0ADQANAA0ADQANAA0ADgAOAA0ADQANAAwADAAMAAwADAALAAsA
CwAKAAkACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAcABwAHAAcABwAH
AAcABwAGAAYABgAGAAYABgAFAAUABQAFAAUA
         </WaveFormData>

i tried converting it to an image file using some libraries but it didn't work

here is my code

import xml.etree.ElementTree as elemTree
from glob import glob
import io
from PIL import Image
import base64

train = glob('./electrocardiogram/data/train/normal/*.xml')
tree = elemTree.parse(train[0])
root = tree.getroot()
wfs = root.findall("Waveform")
lds = [wf.find("LeadData") for wf in wfs]
wfds = [str(ld.find("WaveFormData").text.strip().replace("\n",""))  for ld in lds]
wfds = [base64.b64decode(wfd) for wfd in wfds]
wfds = [io.BytesIO(wfd) for wfd in wfds]
img = Image.open(wfds[1])

but i get this error while converting BytesIO object to PIL image object

PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x00000208392555E0>

  • 1
    Hi there, Your problem seems related to this issue. Please check out this link https://stackoverflow.com/questions/58645562/python-converting-an-xml-file-to-an-image – Prabin Sapal Dec 06 '21 at 13:18

0 Answers0