加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Pillow模块图片生成

发布时间:2020-12-15 17:09:50 所属栏目:大数据 来源:网络整理
导读:0825自我总结 Pillow模块图片生成 一.模块安装 pip3 install pillow 二.模块的载入 import PIL 三.django结合img标签生成图片 img.html img src='/img/' url.py from django.conf.urls import urlfrom django.contrib import admin#主路由导入视图内函数from

0825自我总结

Pillow模块图片生成

一.模块安装

pip3 install pillow

二.模块的载入

import PIL

三.django结合img标签生成图片

img.html

<img src='/img/'>

url.py

from django.conf.urls import url
from django.contrib import admin
#主路由导入视图内函数
from app import views
urlpatterns = [
    url(r'^img/',views.img),url(r'^show/',views.show),]

view.py

方法一:返回固定图片

def show(request):
    return render(request,'img.html')

def img(request)
	with open('static/img/lhf.jpg','rb') as f:
   		data=f.read()
    return HttpResponse(data)

方法二:自动生成图片(借助第三方模块pillow)

from PIL import Image
def show(request):
    return render(request,'img.html')

def img(request)
    img=Image.new('RGB',(350,40),(123,222,222)) #颜色模式,长宽,rgb里面的颜色
    #把图片保存起来
    with open('static/img/code.png','wb') as f:
    #把图片保存起来(注意,用img对象的save方法,把f传入)
    	img.save(f)
    #打开返回
    with open('static/img/code.png','rb') as f:
        data=f.read()
    return HttpResponse(data)

方法三:保存在内存中(需要借助io模块)

from PIL import Image
from io import BytesIO

def show(request):
    return render(request,rgb里面的颜色
    #生成一个Byteio对象
   	f=BytesIO()
    # #把文件保存到对象中
    img.save(f,'png')
    #f.getvalue() 把文件从对象中取出来
    return HttpResponse(f.getvalue())

方法四,保存内存又保存文件中

from PIL import Image
from io import BytesIO

def show(request):
    return render(request,'img.html')

def img(request)
	img=Image.new('RGB',rgb里面的颜色
	#写文字
	#生成一个字体对象
	font=ImageFont.truetype('static/font/kumo.ttf',34) #字体文件路径,字体大小
	# 调用方法,返回一个画板对象
	draw=ImageDraw.Draw(img)
	draw.text((0,10),'python',font=font) #字体的XY坐标,字体内容,字体类型

    f=BytesIO()
    img.save(f,'png')
    return HttpResponse(f.getvalue())

四.画点画线

from PIL import Image
from io import BytesIO

def show(request):
    return render(request,'img.html')

def img(request)
        img = Image.new('RGB',(random.randint(0,255),random.randint(0,255)))
        # 写文字
        # 生成一个字体对象
        font = ImageFont.truetype('/static/Gabriola.ttf',34)
        # 调用方法,返回一个画板对象
        draw = ImageDraw.Draw(img)

        new_text =''
        # 生成随机8位数字
        for x_index in range(1,8):
            num = chr(random.randint(48,57))
            word = chr(random.randint(65,90))
            word_1 = chr(random.randint(97,122))
            text =random.choice((num,word,word_1))
            draw.text((x_index * 32,0),text,font=font)
            new_text +=text

        # 加点线
        width = 320
        height = 35
        for i in range(5):
            x1 = random.randint(0,width)
            x2 = random.randint(0,width)
            y1 = random.randint(0,height)
            y2 = random.randint(0,height)
            # 在图片上画线
            draw.line((x1,y1,x2,y2),fill=(random.randint(0,255)))

        for i in range(33):
            # 画点
            draw.point([random.randint(0,width),height)],255)))
            x = random.randint(0,width)
            y = random.randint(0,height)
            # 画弧形
            draw.arc((x,y,x + 4,y + 4),90,255)))
        print(new_text)
        #存在session中
        request.session['code']=new_text
        #存内存
        f = BytesIO()
        img.save(f,'png')
        return HttpResponse(f.getvalue())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读