python笔记3:PIL的使用

PIL图像处理详解:从滤镜到文字水印
本文介绍了使用Python的PIL库进行图像处理的各种操作,包括加载图片、应用滤镜、剪切图片、粘贴图片、创建镜像、缩放图片、创建空白图片、添加文字水印、绘制颜色块以及带透明度的图片粘贴。通过实例演示了每个功能的使用方法,是学习PIL图像处理的好资料。

PIL的使用

pillow

from PIL import Image, ImageFilter, ImageDraw
1.加载图片
# 1)加载图片,返回图片对象
# 图片地址可以是写绝对路径,也可以写相对路径
图片对象 = Image.open(图片地址)

# 2)显示图片
图片对象.show()		

在这里插入图片描述

如果不知道图片路径那么选择图片按住shift+鼠标右击选择复制路径

  • 相对路径:
    在这里插入图片描述
2.使用滤镜
image1.filter(滤镜效果)
"""
滤镜效果:
ImageFilter.EMBOSS   -  浮雕效果
ImageFilter.FIND_EDGES - 泼墨效果
ImageFilter.SHARPEN  -  锐化滤波
ImageFilter.SMOOTH  -  平滑滤波
ImageFilter.EDGE_ENHANCE_MORE - 边界增强滤波(程度更深)
ImageFilter.EDGE_ENHANCE - 边界增强滤波
ImageFilter.DETAIL - 细节滤波
ImageFilter.CONTOUR - 轮廓滤波(铅笔画)
ImageFilter.BLUR - 模     糊滤波
"""

这里只展示一个结果做例子

  • 记得在首行导入ImageFilter

    from PIL import Image,ImageFilter
    

在这里插入图片描述

3.图片的剪切
图片对象.crop(范围)
范围: (起点x坐标,起点y坐标, 终点x坐标,终点y坐标)

在这里插入图片描述

  • 这里我简单说明一下坐标 前两个0,0 是图片左上角的位置 然后有两个(500,600) 500是向右延伸500的距离,600是向下延伸的距离(黑色部分就是超出图片范围的部分)
  • 前两个是你起始点的坐标 后两个是你终止点坐标 都为正数
    在这里插入图片描述
4.粘贴
图片对象1.paste(图片对象2,(x坐标,y坐标))

对象1是底部照片,对象2是粘贴的图片,(x,y)是粘贴到对象1的起始位置

5.镜像
图片对象.transpose(对称方式)
# Image.FLIP_LEFT_RIGHT - 左右镜像
# Image.FLIP_TOP_BOTTOM - 上下镜像

 image3=image1.transpose(Image.FLIP_LEFT_RIGHT)
 image3.show()

在这里插入图片描述

6.缩放
图片对象.thumbnail((宽度, 高度))  - 自动按比例缩放
7.创建空白图片
Image.new(模式,图片大小, 背景颜色)
empty = Image.new('RGB', (1000, 1000), (0, 255, 255))

这里比较容易理解 给大家附赠一个三原色网站:RGB颜色对照表 (oschina.net)

RGB:三原色 red,green,blue4

在这里插入图片描述

8.文字水印
  • 记得导入ImageDraw
# 1.创建一个空的图片
Image,new(模式,图片大小,背景颜色)
# 2.创建font对象
ImageFont.truetype(字体文件,字体大小)
# 3.创建draw对象
ImageDraw.Draw(图片对象)
# 4.画文字
draw.text(坐标,文字,字体对象,文字颜色)

在这里插入图片描述

9.颜色块
# 1.创建一个图片对象(可以是空图片,也可以是已经存在的图片)
# 2.创建Draw对象
ImageDraw.Draw(图片对象)    ////////// 这个步骤不能漏
# 3.设置点颜色
Draw对象.point(坐标,颜色)
*10. 带透明度的图片粘贴
from PIL import Image

layer1 = Image.open(背景图片地址).convert('RGBA')
layer2 = Image.open(带透明度的小图片的地址)
final1 = Image.new('RGBA', layer1.size, (255, 255, 0, 255))
final1 = Image.alpha_composite(final1, layer1)

final2 = Image.new('RGBA', layer1.size, (255,255,0,0))
final2.paste(layer2, (贴的位置的x坐标, 贴的位置的y坐标))
final1 = Image.alpha_composite(final1, final2)
final1.show()

验证码(随机数字和字母)

from PIL import Image,ImageDraw,ImageFont,ImageFilter

import random
import string
def rand_color():
    return random.randint(0,255),random.randint(0,255),random.randint(0,255)

# 创建空白图片

image1 = Image.new('RGB',(160,90),(0,0,0))
draw = ImageDraw.Draw(image1)
# 随机颜色的颜色块
for x in range(0,161):
    for y in range(0,91):
        draw.point((x,y),rand_color())

# 导入字体
font= ImageFont.truetype('青呱石头体.ttf',30)

# 生成随机数
for x in range(6):
    y= random.randint(20,70)

    a=random.randint(0,1)
    if a==0:
        num = str(random.choice(string.ascii_letters))
    else:
        num = str(random.randint(0, 9))

    draw = ImageDraw.Draw(image1)

    draw.text((x*20,y), num, font=font, fill=(rand_color()))

image1.show()
  • 结果

在这里插入图片描述

**

每天持续更新!!🤣

**

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值