前幾天碰到這麼個問題,讀取的圖片數據是經過請求傳遞過來的python
image_data = request.files['xxxx'].stream.read()
這麼一來image_data類型是str類型。直接用PIL.Image.save()就會出錯。spa
後來問了下頭兒才知道能夠這麼寫:code
import StringIO buffer = StringIO.StringIO('buffer') buffer.write(imagedata) image_data = Image.open(buffer)
將讀到的stringIO存到buffer緩衝區中,而後在用Image.open方法去讀取這樣讀取到的就是Image類型了blog
並且內存緩衝區速度要比硬盤快,比先保存成圖片文件在用Pillow打開效率要高圖片
若要是Image類型,轉換成字符串IO:內存
import StringIO buffer = StringIO.StringIO('buffer'); image_data.save(buffer,'PNG') str_data = buffer.getvalue()
這樣就能將Image類型的image_data轉換成字符串IO的str_data了字符串