How to decode jpg image from memory?


I can read a jpg image from disk via PIL, Python OpenCV, etc. into a numpy array via some built-in functions such as (in the case of OpenCV) arr= cv2.imread(filename).

But how do I decode a jpg in binary format directly from memory?

Use case: I want to put a jpg image into a database in binary format and then read it from the db into memory and decode it to a numpy array.

Is this possible?

Asked By: mrgloom



Assuming that you are storing the image data in your db as a string, you first need to construct a numpy array from that string that can later be converted to an image using cv2.imdecode. For example:

img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
Answered By: ZdaR

for Python3 use this way:

from scipy import misc
import io

f = open('file.png', 'rb')
fs =
likefile = io.BytesIO(fs)
face1 = misc.imread(likefile)

Python2 has StringIO.

Answered By: feech

Fetching Images from Url to Jpg

    import requests
    from io import BytesIO

    response = requests.get("")
    my_img_In_byts = BytesIO(response.content).read()


    my_fprinter = open(path, mode='wb')
    print( my_fprinter .write(my_img_In_byts))
Categories: questions Tags: , , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.