¿Cómo leo datos de imágenes de una URL en Python?

| | | | | | |

Lo que trato de hacer es bastante simple cuando se trata de un archivo local, pero el problema surge cuando trato de hacer esto con una URL remota.

Básicamente, estoy tratando de crear un objeto de imagen PIL a partir de un archivo extraído de una URL. Claro, siempre podría obtener la URL y almacenarla en un archivo temporal, luego abrirlo en un objeto de imagen, pero eso se siente muy ineficiente.

Esto es lo que tengo:

Image.open(urlopen(url)) 

Se desvanece quejándome de que seek( ) no está disponible, entonces probé esto:

Image.open(urlopen(url).read()) 

Pero eso tampoco funcionó. ¿Hay una mejor manera de hacer esto, o escribir en un archivo temporal es la forma aceptada de hacer este tipo de cosas?