将 jpeg 字符串转换为 PIL 图像对象
Converting jpeg string to PIL image object
我收到了来自应用程序后端的文件列表,这些文件应该是 jpeg 文件。然而,对于我来说,我无法将它们转换为 PIL 图像对象。当我打电话时
str(curimg)
我回来了:
<type 'str'>
。我试过使用 open()、.read、io.BytesIO(img.read() 并且也什么都不做,但它一直将其视为字符串。当我打印字符串时,我得到无法识别的字符. 有谁知道如何告诉 python 如何将此字符串解释为 jpeg 并将其转换为药丸图像,我可以在其中调用 .size 和 np.array on?
您应该能够将 StringIO 对象传递给 PIL 并以这种方式打开它。
即:
from PIL import Image
import StringIO
tempBuff = StringIO.StringIO()
tempBuff.write(curimg)
tempBuff.seek(0) #need to jump back to the beginning before handing it off to PIL
Image.open(tempBuff)
同样的事情,但更简单一些
from PIL import Image
import io
Image.open(io.BytesIO(image))
注:
如果图片在网络上;你需要先下载它。
import requests
image = requests.get(image_url).content #download image from web
然后传给io模块
io.BytesIO(image)
如果图像在您的高清中;可以直接用PIL打开。
Image.open('image_file.jpg') #image in your HD
对我来说,none 以上解决方案有效。
我终于像这样正确地读取了字符串:
from PIL import Image
img = Image.frombytes('RGB', (640, 480), img_str, 'raw')
要对其进行测试,您可以执行以下操作
image = Image.open("some.png")
print(image.mode, image.size) # OUT: 'RGB' (640, 480)
image = Image.frombytes('RGB', (640, 480), image.tobytes(), 'raw')
image.show()
@CEO(根据 评论)我不知道 SQL 在这里扮演什么角色,我不确定你想要达到什么目的,但我记得我遇到了一些问题,这对我的情况有用,希望对您有所帮助
frame = self._rawNode.display_frame.copy()
width = int(self.customLayout.geometry().width())
height = int(frame.shape[0] * (width / frame.shape[1]))
display_frame = cv2.cvtColor(cv2.resize(frame, (width, height)), cv2.COLOR_BGR2RGB)
qImg = QtGui.QImage(display_frame.data, width, height, 3 * width, QtGui.QImage.Format_RGB888)
self.pixmap = QtGui.QPixmap(qImg)
self.Imagelabel.setPixmap(self.pixmap)
我收到了来自应用程序后端的文件列表,这些文件应该是 jpeg 文件。然而,对于我来说,我无法将它们转换为 PIL 图像对象。当我打电话时
str(curimg)
我回来了:
<type 'str'>
。我试过使用 open()、.read、io.BytesIO(img.read() 并且也什么都不做,但它一直将其视为字符串。当我打印字符串时,我得到无法识别的字符. 有谁知道如何告诉 python 如何将此字符串解释为 jpeg 并将其转换为药丸图像,我可以在其中调用 .size 和 np.array on?
您应该能够将 StringIO 对象传递给 PIL 并以这种方式打开它。
即:
from PIL import Image
import StringIO
tempBuff = StringIO.StringIO()
tempBuff.write(curimg)
tempBuff.seek(0) #need to jump back to the beginning before handing it off to PIL
Image.open(tempBuff)
同样的事情,但更简单一些
from PIL import Image
import io
Image.open(io.BytesIO(image))
注:
如果图片在网络上;你需要先下载它。
import requests
image = requests.get(image_url).content #download image from web
然后传给io模块
io.BytesIO(image)
如果图像在您的高清中;可以直接用PIL打开。
Image.open('image_file.jpg') #image in your HD
对我来说,none 以上解决方案有效。
我终于像这样正确地读取了字符串:
from PIL import Image
img = Image.frombytes('RGB', (640, 480), img_str, 'raw')
要对其进行测试,您可以执行以下操作
image = Image.open("some.png")
print(image.mode, image.size) # OUT: 'RGB' (640, 480)
image = Image.frombytes('RGB', (640, 480), image.tobytes(), 'raw')
image.show()
@CEO(根据
frame = self._rawNode.display_frame.copy()
width = int(self.customLayout.geometry().width())
height = int(frame.shape[0] * (width / frame.shape[1]))
display_frame = cv2.cvtColor(cv2.resize(frame, (width, height)), cv2.COLOR_BGR2RGB)
qImg = QtGui.QImage(display_frame.data, width, height, 3 * width, QtGui.QImage.Format_RGB888)
self.pixmap = QtGui.QPixmap(qImg)
self.Imagelabel.setPixmap(self.pixmap)