zoukankan      html  css  js  c++  java
  • Django Pillow

    BBS项目数据设计

    数据库设计:
    		User
    			-id
    			-name
    			-password
    			-email
    			-phone
    			-avatar   用户头像
    			-create_date    用户注册时间
    			-blog
    		Blog
    			-id
    			-title   #博客标题
    			-site_name  #站点名称
    			-theme
    		category(分类):   #一个站点可以有多个分类,但分类只属于创建分类那个人的站点
    			-nid
    			-title
    			-blog   跟blog一对多
    			
    		tag:(文章关键字)
    			-id
    			-title
    			-blog    跟blog一对多
    			
    		article
    			-id
    			-title
    			-desc    摘要
    			-create_time    auto_add_now:当该条记录创建时,自动添加当前时间
    			-content   文章内容
    			
    			-category    一对多  一个分类可以有多个文章
    			-tag         多对多   多个文章可以有多个关键字
    			-blog        一对多   一个博客站点可以有多个文章
    			
    		commit(评论)
    			-id
    			-user     哪个用户 外键
    			-article  对哪篇文章 外键
    			-content   评论了什么内容
    			-commit_time  时间
    			
    			-parent_id  这个绑定commit 的id
    			
    			
           nid    user    article   content    parent_id
    		
    	1      1          1       111         null
    	2      2          1       222         null
    	3      3          1       333          1
    	4      4          1       444          3
    	5      3          1       555          4
    
    
    		UpandDown(点赞数 反对数)
    			-nid
    			-user     哪个用户
    			-article  对哪篇文章
    			-is_up   点赞还是点踩 
    

     Pillow

    from django.shortcuts import render, HttpResponse
    from PIL import Image,ImageDraw,ImageFont
    
    import random
    from io import BytesIO
    
    
    def get_valid_code(request):
        # 第一种方式
        with open('static/img/lhf.jpg','rb') as f:
            # 图片二进制
            data=f.read()
        return HttpResponse(data)
    
        # 第二种方式:随机生成一张图片
        # pip3 install Pillow
        # pillow 是一个图形处理的模块,功能很强强大
        # 生成一张图片,第一个参数是模式:RGB,第二个参数是图片大小,第三个参数是图片颜色
        img = Image.new('RGB', (320, 35), color=get_random_color())
        # 保存到本地
        with open('valid_code.png', 'wb') as f:
            # 直接用img的save方法,第一个参数是空文件,第二个参数图片格式
            img.save(f, 'png')
        # 打开文件,再返回
        with open('valid_code.png', 'rb') as f:
            data = f.read()
        return HttpResponse(data)
    
        #from io import BytesIO 
        #BytesIO 是在内存中生成空文件进行管理 能自动清理 速度更快
    
        # 第三种方式
        # 在内存中生成一个空文件(把它想象成 open('valid_code.png', 'wb') as f:)
        # 一个是在硬盘上,一个是在内存中
        img = Image.new('RGB', (320, 35), color=get_random_color())
        f = BytesIO()
        # 把图片保存到f中
        # 放到内存中,存取比较快,而且有自动清理
        img.save(f, 'png')
    
        data = f.getvalue()
        return HttpResponse(data)
    
    
        # 第四种方式,在图片上写文字
        img = Image.new('RGB', (320, 35), color=get_random_color())
        # 拿到画笔,把图片传入画笔
        img_draw=ImageDraw.Draw(img)
        # 生成一个字体对象,第一个参数是字体文件的路径,第二个参数是字体大小
        font=ImageFont.truetype('static/font/ss.TTF',size=25)
    
        # 第一个参数,xy的坐标,第二个参数:要写的文字,第三个参数:写文字的颜色,第四个参数:字体
        # 不同的字体是不同的ttf文件
        img_draw.text((0,0),'python',get_random_color(),font=font)
    
        f = BytesIO()
        # 把图片保存到f中
        # 放到内存中,存取比较快,而且有自动清理
        img.save(f, 'png')
    
        data = f.getvalue()
        return HttpResponse(data)    
    
  • 相关阅读:
    [算法] 堆栈
    [刷题] PTA 02-线性结构3 Reversing Linked List
    java IO流 (八) RandomAccessFile的使用
    java IO流 (七) 对象流的使用
    java IO流 (六) 其它的流的使用
    java IO流 (五) 转换流的使用 以及编码集
    java IO流 (四) 缓冲流的使用
    java IO流 (三) 节点流(或文件流)
    java IO流 (二) IO流概述
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/layerluo/p/10029177.html
Copyright © 2011-2022 走看看