1

I know there are a thousand questions like that out there but none of the provided solutions do actually work. I am using pythong 3.4. I would like to directly open the url as an image, not store it first on the disk.

Basically the code comes down to this

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


This yields for me an error. I also tried it without the .read() and with
file = urllib.request.urlopen("...")
both with and without the .read()

Basically I am lost. The only thing I can do is change the error that python is throwing at me. Thanks for any help!
Error messages with the above mentioned version:
TypeError: embedded NUL character
Without the read()
io.UnsupportedOperation: seek

With "urllib.request.urlopen("...") without .read()
io.UnsupportedOperation: seek

with .read()
TypeError: embedded NUL character

2
  • First of all, format your code correctly, What is the error that python throws at you? Commented Feb 7, 2015 at 14:38
  • added errors in the question Commented Feb 7, 2015 at 15:25

1 Answer 1

4

To avoid using tkinter and to avoid writing the file locally, use a buffer:

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>

This is using 2.7, which doesn't have urllib.request, so modify this as required.

Also, be aware that this image appears to be malformed/invalid

Sign up to request clarification or add additional context in comments.

1 Comment

@notsoimportant The best way to say this is to mark the answer as correct!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.