zoukankan      html  css  js  c++  java
  • pillow模块

    pillow模块

    用于操作图片的模块

    安装

    pip install pillow

    生成验证码

    from PIL import Image,ImageDraw,ImageFont
    from io import BytesIO,StringIO
    import random
    def get_random():
        return random.randint(0,255),random.randint(0,255),random.randint(0,255)
    
    def get_code(request):
        #生成图片,参数第一位为mode,第二位是size,第三位是颜色rgb
        img_obj = Image.new("RGB",(360,35),get_random())
        #生成画笔对象,在谁身上画,就把谁传进去
        img_draw = ImageDraw.Draw(img_obj)
        #生成字体对象,里面传字体文件路径和字号
        img_font = ImageFont.truetype('static/font/111.ttf',30)
        code = ''
        for i in range(5):
            upper_str = chr(random.randint(65,90))
            lower_str = chr(random.randint(97,122))
            random_int = chr(random.randint(48,57))
            tmp = random.choice([upper_str,lower_str,random_int])
            #使用画笔对象生成文字
            img_draw.text((i*60+60,0),tmp,get_random(),img_font)
            code += tmp
        print(code)
        request.session['code'] = code
        io_obj = BytesIO()
        img_obj.save(io_obj,'png')
        #返回一个字符串
        return HttpResponse(io_obj.getvalue())
    

    说明:

    生成五位数的随机验证码图片,

    io模块用于直接在内存中操作图片,减少对硬盘的io操作.

    图片的缩放

    from PIL import Image
    
    # 打开一个jpg图像文件,注意是当前路径:
    im = Image.open('test.jpg')
    # 获得图像尺寸:
    w, h = im.size
    print('Original image size: %sx%s' % (w, h))
    # 缩放到50%:
    im.thumbnail((w//2, h//2))
    print('Resize image to: %sx%s' % (w//2, h//2))
    # 把缩放后的图像用jpeg格式保存:
    im.save('thumbnail.jpg', 'jpeg')
    

    图片的模糊

    from PIL import Image, ImageFilter
    
    # 打开一个jpg图像文件,注意是当前路径:
    im = Image.open('test.jpg')
    # 应用模糊滤镜:
    im2 = im.filter(ImageFilter.BLUR)
    im2.save('blur.jpg', 'jpeg')
    

    其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。

  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/agsol/p/12013495.html
Copyright © 2011-2022 走看看