PIL

由于昨天胃疼得要死,所以今天早上才写
今天主要学习了**PIL(Python Image Library)**这是一个Python的图像处理工具包,功能就是图像处理

使用步骤
  1. 设置pip环境(settings–pip–install)
  2. 安装在Terminal输入pip install pillow
  3. 从文件PIL导出Image模块(Image类在模块中定义)
from PIL import Image  
  1. 基本操作
#打开图片
image1=Image.open(' ')#image1是Image的一个对象
#显示图片
image1.show()
#保存图片
image1.save('')
  1. 滤镜
#加入模块 **ImageFilter**
#滤镜对象.filter(滤镜效果)image1就是这样的对象
image2=image1.filter(ImageFilter.EMBOSS)
#EMBOSS浮雕CONTOUR铅笔画BLUR模糊FIND_EDGES锐化

在这里插入图片描述

  1. 图片粘贴
#paste(要粘贴的图片,位置)
image1.paste(image2,(0,0))
#创建空白图
#new(模式,大小,颜色)
#模式:RGB红绿蓝 RGBA红绿蓝透明度
#(255,0,0)红 (0,255,0) 绿 (0,0,255) 蓝 (255,255,255)白 (0,0,0) 黑
empty=Image.new('RGB',(0,0),(0,0,0))
empty.paste(image1,(0,0))

在这里插入图片描述

  1. 文字水印
#加入模块**ImageDraw, ImageFont**
#指定字体类型  **ImageFont.truetype**(什么字体类型,字体大小)
x=ImageFont.turetype('文件夹/fonts/aa.ttf',28)
#需要找一个对象,将aa类型的 28大小的字体画到图片上
y=ImageDraw.Draw(image1)
#指定文字水印内容 y.text((坐标),文字内容,文字颜色,字体对象)
y.text((0,0),'文字内容',(0,0,0,0),x)
image1.show()

在这里插入图片描述

  1. 缩放图片
image1.thumbnail((100,100))
  1. 裁剪图片
#打开的图片.crop(范围)   范围:((x1,y1,x2,y2))
z=image1.crop((0,0,200,200)#左上角,右下角
z.show()

在这里插入图片描述

  1. 镜像图片
#左右镜像
image2=image1.transpose(Image.FLIP_LEFT_RIGHT)
#上下镜像
image2=image1.transpose(Image.FLIP_TOP_BOTTOM)

在这里插入图片描述

  1. 制作验证码
from PIL import Image,ImageDraw, ImageFilter , ImageFont
from random import randint #随机选取数字
image1 = Image.new('RGBA',(120,60),(120,130,140,100))
#模式,大小,颜色透明度
image1.show()
#渲染背景
draw = ImageDraw.Draw(image1)
#x = randint(0,120)
#y = randint(0, 60)
#r = randint(0, 255)
#g = randint(0, 255)
#b= randint(0, 255)
#draw.point((100,50),(255,0,0))#固定坐标只能画一个点
#draw.point((x,y),(r,g,b))#变化坐标,颜色
for x in range(0,120):#变化数字,颜色随机
    for y in range(0,60):#x取 0, y取 0-59,x取 1,y取 0-59
        r = randint(0, 255)
        g = randint(0, 255)
        b = randint(0, 255)
        draw.point((x,y),(r,g,b))
image1.filter(ImageFilter.BLUR)
#image1.show()
#from random import randint
#print(randint(1,50))#结果是范围内任何数字

#渲染文字
font=ImageFont.truetype('files/fonts/aa.ttf',20)
#draw.text((10,20),'qf',(100,100,111),font)#固定
for x in range(5):
    num = str(randint(0,9))#将数字类型转为文字类型
    y=randint(10,20)
    r=randint(0,255)
    g=randint(0,255)
    b=randint(0,255)
    draw.text((x*30,y),num,(r,g,b),font)
#print(num)
image1.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值