【问题标题】:How to decode jpg image from memory?如何从内存中解码jpg图像?
【发布时间】:2017-11-03 15:07:02
【问题描述】:
我可以通过 PIL、Python OpenCV 等将磁盘中的 jpg 图像通过一些内置函数(例如(在 OpenCV 的情况下)arr= cv2.imread(filename))读取到 numpy 数组中。
但是如何直接从内存中解码二进制格式的 jpg?
用例:我想将一个jpg图像以二进制格式放入数据库中,然后将其从数据库中读取到内存中,并将其解码为一个numpy数组。
这可能吗?
【问题讨论】:
标签:
python
opencv
numpy
binary
jpeg
【解决方案1】:
假设您将图像数据作为string 存储在您的数据库中,您首先需要从该字符串构造一个numpy 数组,该数组稍后可以使用cv2.imdecode 转换为图像。例如:
img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
【解决方案2】:
从 Url 获取图像到 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")
【解决方案3】:
对于python3使用这种方式
from scipy import misc
f= open('file.png', 'rb')
fs = f.read()
likefile = io.BytesIO(fs)
face1 = misc.imread(likefile)
python2 有 StringIO