我是python的新手。但是我有一个任务,我需要从 URL 显示/获取图像。我一直在使用带有 python 的 Jupyter notebook 来尝试这样做。
import sys
print(sys.version)
3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)
我试图像在这篇文章中那样做,但没有一个答案有效。
和
import urllib, cStringIO
file = cStringIO.StringIO(urllib.urlopen(URL).read())
img = Image.open(file)
Run Code Online (Sandbox Code Playgroud)
我得到:
ImportError Traceback (most recent call last)
<ipython-input-33-da63c9426dad> in <module>()
1 url='http://images.mid-day.com/images/2017/feb/15-Justin-Bieber.jpg'
2 print(url)
----> 3 import urllib, cStringIO
4
5 file = cStringIO.StringIO(urllib.urlopen(URL).read())
ImportError: No module named 'cStringIO'
Run Code Online (Sandbox Code Playgroud)
和:
from PIL import Image
import requests
from io import BytesIO
response = requests.get(url)
img = Image.open(BytesIO(response.content))
Run Code Online (Sandbox Code Playgroud)
我得到:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-11-168cd6221ea3> in <module>()
1 #response = requests.get("https://baobab-poseannotation-appfile.s3.amazonaws.com/media/project_5/images/images01/01418849d54b3005.o.1.jpg")
----> 2 response.read("https://baobab-poseannotation-appfile.s3.amazonaws.com/media/project_5/images/images01/01418849d54b3005.o.1.jpg").decode('utf-8')
3 img = Image.open(StringIO(response.content))
AttributeError: 'Response' object has no attribute 'read'
Run Code Online (Sandbox Code Playgroud)
和:
from PIL import Image
import requests
from StringIO import StringIO
response = requests.get(url)
img = Image.open(StringIO(response.content))
Run Code Online (Sandbox Code Playgroud)
我得到:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-37-5716207ad35f> in <module>()
3 from PIL import Image
4 import requests
----> 5 from StringIO import StringIO
6
7 response = requests.get(url)
ImportError: No module named 'StringIO'
Run Code Online (Sandbox Code Playgroud)
等等....
我认为这将是一项简单的任务,但到目前为止我还没有找到答案。我真的希望有人能帮助我
这对我有用
from PIL import Image
import requests
from io import BytesIO
url = "https://baobab-poseannotation-appfile.s3.amazonaws.com/media/project_5/images/images01/01418849d54b3005.o.1.jpg"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
img.show()
Run Code Online (Sandbox Code Playgroud)
您收到错误,因为您改用了该行response.read("https://baobab-poseannotation-appfile.s3.amazonaws.com/media/project_5/images/images01/01418849d54b3005.o.1.jpg").decode('utf-8')。我会切换回使用response = requests.get(url)
此外,对于您的错误:ImportError: No module named 'cStringIO',您正在使用 python3。来自 python 2 的 StringIO 和 cStringIO 在 python 3 中被删除。from io import StringIO改为使用。有关更多详细信息,请参阅Python3 中的 StringIO。
这可能与/sf/answers/3286845201/重复。
对于您的第三个选项,PIL您可以试试这个:
from PIL import Image
import requests
import matplotlib.pyplot as plt
response = requests.get(url, stream=True)
img = Image.open(response.raw)
plt.imshow(img)
plt.show()
Run Code Online (Sandbox Code Playgroud)