convert base64 string into image in python

Viewed 75

I am trying to convert base64 string into image, so far I have been following this: How to convert base64 string to image? here is pas of the code

image = stringToRGB(request.POST.get("image", None))
#request.POST.get("image", None) = /9j/4QL2RXhpZgAATU0AKgAAAAgACwEPAAIAAAAIAAAAkgEQAAIAAAAJAAAAmgESAAMAAAABAAgAAAEaAAUAAAABAAAApAEbAAUAAAABAAAArAEoAAMAAAABAAIAAAExAAIAAAA8AAAAtAEyAAIAAAAUAAAA8AITAAMAAAABAAEAAIdpAAQAAAABAAABBIglAAQAAAABAAAC6AAAAABzYW1zdW5nAFNNLU0xMTVGAAAAAABIAAAAAQAAAEgAAAABbTExcW5zeHgtdXNlciAxMCBRUDFBLjE5MDcxMS4wMjAgTTExNUZYWFUxQVRKMiByZWxlYXNlLWtleXMAMjAyMTowNDoyMCAwOTo1OTozMgAAHIKaAAUAAAABAAACWoKdAAUAAAABAAACYogiAAMAAAABAAAAAIgnAAMAAAABAi8AAJAAAAcAAAAEMDIyMJADAAIAAAAUAAACapAEAAIAAAAUAAACfpEBAAcAAAAEAQIDAJIBAAoAAAABAAACkpICAAUAAAABAAACmpIDAAoAAAABAAACopIHAAMAAAABAAIAAJIJAAMAAAABABgAAJIKAAUAAAABAAACqpKQAAIAAAAHAAACspKRAAIAAAAHAAACupKSAAIAAAAHAAACwqAAAAcAAAAEMDEwMKABAAMAAAABAAEAAKACAAQAAAABAAAFAKADAAQAAAABAAAC0KAFAAQAAAABAAACyaIXAAMAAAABAAAAAKMBAAcAAAABAQAAAKQCAAMAAAABAAAAAKQDAAMAAAABAAAAAKQFAAMAAAABAAAAAKQGAAMAAAABAAAAAAAAAAAAAAABAAAAGAAAAMgAAABkMjAyMTowNDoyMCAwOTo1OTozMgAyMDIxOjA0OjIwIDA5OjU5OjMyAAAAEegAAAPoAAAAyAAAAGT////MAAAAZAAACsgAAAPoMTYwMzA2ADAxNjAzMDYAMDE2MDMwNgAAAgABAAIAAAAEUjk4AAACAAcAAAAEMDEwMAAAAAAAAAAAAAAA/9sAhAA
def stringToRGB(base64_string):
    imgdata = base64.b64decode(str(base64_string))
    image = Image.open(io.BytesIO(imgdata))
    return cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB)

the result is I get an error that say "Incorrect padding" is there a way to solve this case ?

Second update

def stringToRGB(base64_string):
    base64_string += "=" * ((4 - len(base64_string) % 4) % 4)
    imgdata = base64.b64decode(str(base64_string))
    image = Image.open(io.BytesIO(imgdata))
    return cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB)

error for second update:

cannot identify image file <_io.BytesIO object at 0x11ba2c400>

update 3

def stringToRGB(base64_string):
    # base64_string += "===" * ((4 - len(base64_string) % 4) % 4)
    altchars = b'+/'
    base64_string = re.sub(rb'[^a-zA-Z0-9%s]+' %
                           altchars, b'', base64_string)  # normalize
    missing_padding = len(base64_string) % 4
    if missing_padding:
        base64_string += b'=' * (4 - missing_padding)

    imgdata = base64.b64decode(str(base64_string), altchars)
    print(imgdata, ";;;;;;;;")
    image = Image.open(io.BytesIO(imgdata))
    print(image, "////")
    return cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB)

from third update I get an error: cannot use a bytes pattern on a string-like object

0 Answers
Related