1. 程式人生 > >Django PIL 直接從記憶體中或資料庫中blob顯示圖片

Django PIL 直接從記憶體中或資料庫中blob顯示圖片

最近想實現一個圖片驗證的Python程式碼,被PIL卡住了。
因為看了PIL的一些demo,就是沒有看到直接將image轉換成記憶體資料或可以直接print資料的,總不成我要將image先存成臨時檔案吧?這我可接受不了,我試了好長時間終於在limodou那裡的一篇文章找到了靈感,原來是使用StringIO。

以下就是程式碼(注意,如果是從資料庫中讀取資料,要轉換成image物件很容易,這裡不敘述):
[code]
# Create your views here.

from django.http import HttpResponse

import Image, ImageDraw
import StringIO

def validate(request):
#建立一個IO流物件
mstream=StringIO.StringIO()
#這是我想要從querystring中獲取的顯示圖片的字元(如果想要圖片驗證,則加密它,注意我沒有使用session儲存這個需要顯示的字串,因為session消耗資源太大)
text = request.REQUEST["pstr"]
#我這裡演示的是直接產生的字串,實際中需要加入噪音線
im = Image.new("RGBA", (80, 20),color=127*200)
draw = ImageDraw.Draw(im, "RGBA")
draw.ink = 255
draw.text((0,0), text)
im.save(mstream,"JPEG")

return HttpResponse(mstream.getvalue(),"image/jpg")
[/code]

好了,如果你配置了django,可以加一個view試一試,如果沒有,去掉跟django有關的,其他程式碼照樣可以使用。