如何从内存中解码jpg图像?

时间:2017-06-02 09:06:11

标签: python opencv numpy binary jpeg

我可以通过PIL,Python OpenCV等从磁盘读取jpg图像,通过一些内置函数(例如OpenCV)arr= cv2.imread(filename)来创建numpy数组。

但是如何直接从内存中解码二进制格式的jpg?

使用案例:我想将一个jpg图像以二进制格式放入数据库,然后将其从db读入内存并将其解码为numpy数组。

这可能吗?

3 个答案:

答案 0 :(得分:7)

假设您将数据库中的图像数据存储为string,首先需要从该字符串构造一个numpy数组,以后可以使用{{3}将其转换为图像}。例如:

img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), -1)

答案 1 :(得分:1)

for python3使用这种方式

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

python2有StringIO

答案 2 :(得分:0)

从网址获取图像到Jpg

    import requests
    from io import BytesIO

    response = requests.get("https://optse.ztat.net/teaser/ES/CW15_ES_bermuda_men.jpg")
    my_img_In_byts = BytesIO(response.content).read()


    path="C:/Users/XX/Desktop/TryingPython/downloadedPic.jpg"

    my_fprinter = open(path, mode='wb')
    print( my_fprinter .write(my_img_In_byts))
    my_fprinter.close()
    print("Done")