2015-02-07 69 views
0

我知道那里有上千个问题,但是没有一个提供的解决方案确实有效。 我正在使用pythong 3.4。 我想直接打开网址作为图像,而不是先将它存储在磁盘上。在python中打开http的图像3

基本上代码归结到这一点

from PIL import Image <br /> 
import urllib.request <br /> 
... <br /> 
opener = urllib.request.build_opener() <br /> 
file = opener.open("http://pixel.quantserve.com/pixel") <br /> 
img = Image.open(file.read()) <br /> 
width, height = img.size 


这产生了我一个错误。我也有和无.read()

基本上我失去了尝试它没有 .read() 与
文件= urllib.request.urlopen( “...”)
。我唯一能做的就是改变python向我抛出的错误。谢谢你的帮助!
错误信息与上面提到的版本:
类型错误:嵌入式NULL字符
没有阅读()
io.UnsupportedOperation:寻求

随着 “urllib.request.urlopen(” ...“)没有。阅读()
io.UnsupportedOperation:寻求

与.read()
类型错误:嵌入式NULL字符

+0

首先,正确格式的代码,什么是错误的Python抛出你吗? – 2015-02-07 14:38:36

+0

在问题中增加了错误 – notsoimportant 2015-02-07 15:25:21

回答

1

为了避免使用Tkinter的,避免书写该文件在本地,使用缓冲区:

from PIL import Image 
import urllib 
from io import BytesIO 

f = urllib.urlopen("http://pixel.quantserve.com/pixel") 
b = BytesIO(f.read()) 
i = Image.open(b) 

i # <PIL.TgaImagePlugin.TgaImageFile image mode=P size=512x17410 at 0x7FBA4A3712D8> 

这是用2.7,不具有urllib.request,从而需要进行修改。

此外,要知道,这种图像格式似乎不正确/无效

+0

BytesIO节省了一天:)谢谢soooo太多 – notsoimportant 2015-02-07 17:35:50

+0

@notsoimportant说这个最好的方法是将答案标记为正确! – Paul 2015-02-07 20:39:42