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有关的,其他代码照样可以使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值