我是Python的新手,我正在试图弄清楚如何从URL读取图像.
这是我目前的代码:
from PIL import Image
import urllib.request, io
URL = 'http://www.w3schools.com/css/trolltunga.jpg'
with urllib.request.urlopen(URL) as url:
s = url.read()
Image.open(s)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
C:\python>python image.py
Traceback (most recent call last):
File "image.py", line 8, in <module>
Image.open(s)
File "C:\Anaconda3\lib\site-packages\PIL\Image.py", line 2272, in open
fp = builtins.open(filename, "rb")
ValueError: embedded null byte
Run Code Online (Sandbox Code Playgroud)
我不知道这意味着什么.我究竟做错了什么?
fur*_*ras 10
Image.open()
期望文件名或类文件对象 - 而不是文件数据.
你可以在本地写图像 - 即作为"temp.jpg"
- 然后打开它
from PIL import Image
import urllib.request
URL = 'http://www.w3schools.com/css/trolltunga.jpg'
with urllib.request.urlopen(URL) as url:
with open('temp.jpg', 'wb') as f:
f.write(url.read())
img = Image.open('temp.jpg')
img.show()
Run Code Online (Sandbox Code Playgroud)
或者您可以使用io
模块在内存中创建类文件对象
from PIL import Image
import urllib.request
import io
URL = 'http://www.w3schools.com/css/trolltunga.jpg'
with urllib.request.urlopen(URL) as url:
f = io.BytesIO(url.read())
img = Image.open(f)
img.show()
Run Code Online (Sandbox Code Playgroud)
这是使用scikit-image从URL读取图像的方法
from skimage import io
io.imshow(io.imread("http://www.w3schools.com/css/trolltunga.jpg"))
io.show()
Run Code Online (Sandbox Code Playgroud)
注意:io.imread()返回一个numpy数组
归档时间: |
|
查看次数: |
19670 次 |
最近记录: |