Image Processing: How to read image from string in python ?
Tags: python, machinelearning, ai, programming
Published: 2021-08-26 13:32:48

## Reading image from string base64
<br>
🚩 In this tutorial we are going to investigate together how to read image string base64 in python language. 

To be able to do processing on image in python some of modules should be used. We are going to use PIL to demonstrate image at this point. 

Let's code it !

To get an image as string we need to convert base64 format firstly. Python base64 module is also used for this process. 

Let's start with importing the required modules.


👉 ```python
   import base64
   import io
   from PIL import Image
``` 

That's it !
So, the first we are going to convert image to base64 using python. Let's do it !

👉
```python
   def read_string():
      with open("tux.jpg", "rb") as image:
          image_string = base64.b64encode(image.read())

      return image_string
```
I have used a local image "tux.jpg" so, you can use anything that has true image format. Let me clarify the codes above.

**Step 1:** I have defined function *read_string()* and opened the image in **rb** mode. The variable image_string that inside of the function holds base64 string. 

👉
```python
   if __name__ == "__main__":
       base64_string = read_string()
       print(base64_string)
```

When I call the function in the main method we probably are going to get an output like this:

```
   b'/9j/4AAQSkZJRgABAQAAAQABAAD/7QBsUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAE8cAVoAAxslRxwCAAACAAAcAnQAO8KpIFNvZmlhWW91c2hpIC0gaHR0cDovL3d3dy5yZWRidWJibGUuY29tL3Blb3BsZS9zb2ZpYXlvdXNoAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQ

....

/5W09f+V+gfFfqHxX6h8V+ofFfqHxX6h8V+ofFfvHxX7x8V+8fFfvHxU6Y9FblW4A0P8Aj2//2Q=='
```
It's too long as you see but there is no problem. Not too big data to process on programming language !

Let's decode the image base64 string vice versa. 

👉
```python
   def decode_base64():
       base64_string = read_string()
       decoded_string = io.BytesIO(base64.b64decode(base64_string))
       img = Image.open(decoded_string)
       return img.show()
``` 
I have used the other function inside this function to get image string and the other function returns image string as you know. Anyways so **base64_string** variable holds image string in *base64* format and decoded. The last I have used Image function from **PIL** to show image. 

👉
```python
   if __name__ == "__main__":
       decode_base64()
```

When I call the function *decode_base64()* the image will be open.

Output:
![tux.jpg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ajgg95s58inzihz51cg6.jpg)

The entire code is shared below:
👉
```python
import base64
import io
from PIL import Image


def read_string():
    with open("tux.jpg", "rb") as image:
        image_string = base64.b64encode(image.read())

    return image_string

def decode_base64():

    base64_string = read_string()
    decoded_string = io.BytesIO(base64.b64decode(base64_string))
    img = Image.open(decoded_string)
    return img.show()
    


if __name__ == "__main__":
    base64_string = read_string()
    print(base64_string)

    decode_base64()
```