因为看了PIL的一些demo,就是没有看到直接将image转换成内存数据或可以直接print数据的,总不成我要将image先存成临时文件吧?这我可接受不了,我试了好长时间终于在limodou那里的一篇文章找到了灵感,原来是使用StringIO。
以下就是代码(注意,如果是从数据库中读取数据,要转换成image对象很容易,这里不叙述):
# 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")
好了,如果你配置了django,可以加一个view试一试,如果没有,去掉跟django有关的,其他代码照样可以使用。