PythonのBytesIO

BytesIOはメモリ上でバイナリデータを扱うための機能
同様な機能としてStringIO, cStringIOがある

import io
import urllib.request
from PIL import Image

url = "https://www.python.org/static/img/python-logo@2x.png"
img_in = urllib.request.urlopen(url).read()
img_bin = io.BytesIO(img_in)
img = Image.open(img_bin)
img.save("logo.png","PNG")
print(img_bin.getvalue())