pillow模块

Pillow模块

一、Pillow模块安装

  • 在cmd指令框通过pip安装
pip install pillow
  • 在pycharm中安装模块

pillow模块

二、操作图像

  • 图片缩放
# 方法一
from PIL import Image
img3=Image.open('002.jpg')
w,h=img3.size
img3.thumbnail((w//2,h//2))#w//2 取整,将图像的宽高缩小为1/2,thumbnail()中传入的是一个可迭代对象
img3.show()

#方法二:通过resize改变图像尺寸
from PIL import Image
img2=Image.open('002.jpg')
img2=img2.resize((500,300))
img2.show()#展示图片
#通过save()保存修改后的图片,第一个参数为保存图片的路径,后面要有图片格式的后缀名(如:.jpg),第二个参数是文件格式,图片通常用jpeg格式
img2.save('image2.jpg','jpeg')
  • 添加滤镜

pillow模块

#以模糊滤镜为例
from PIL import Image,ImageFilter
img=Image.open('002.jpg')
img1=img.filter(ImageFilter.BLUR)#模糊滤镜
img1.show()
  • 图片裁切
from PIL import Image
img=Image.open('002.jpg')
box=([0,0,100,100])#前两个为起点处xy值,后两个为结束点xy的值,裁剪一个宽高均为100px的区域
region=img.crop(box)
region.show()
  • 图片旋转
#transpose():指定旋转角度的操作
from PIL import Image
img=Image.open('002.jpg')
imgRotate=img.transpose(Image.ROTATE_90)#旋转90度
imgRotate.show()

除了传入Image.ROTATE_90,也可以传入以下参数
- Image.FLIP_LEFT_RIGHT     表示将图像左右翻转
- Image.FLIP_TOP_BOTTOM		表示将图像上下翻转
- Image.ROTATE_90			表示将图像逆时针旋转90°
- Image.ROTATE_180			表示将图像逆时针旋转180°
- Image.ROTATE_270			表示将图像逆时针旋转270°
- Image.TRANSPOSE			表示将图像进行转置(相当于顺时针旋转90°)
- Image.TRANSVERSE			表示将图像进行转置,再水平翻转

#rotate():自定义旋转角度
from PIL import Image
img=Image.open('002.jpg')
imgRotate=img.rotate(180)#旋转180度
imgRotate.show()
  • 给图片添加图片水印
#paste(region,box,mask)(将一个图像粘贴到另一个图像可以做图片水印)
from PIL import Image
img=Image.open('002.jpg')
cimg=Image.open('007.jpg')
wid1,hei1=img.size
wid2,hei2=cimg.size
img.paste(cimg,(wid1-wid2,hei1-hei2))#第一个参数:用作水印的图片(被粘贴的图片),第二个参数:水印位置(此处是在图片的右下角)
img.show()

效果图

pillow模块

  • 给图片添加文字水印
from PIL import Image
from PIL import ImageFont,ImageDraw
str='辰--月 blog'#要用作水印的文字
image=Image.open('002.jpg')
#选择文字字体,ImageFont.truetype()中第一个参数是某个字体文件的保存路径,第二个参数是字号(字体大小)
font=ImageFont.truetype(r'D:\Python_html\PythonProject\005pillow模块\HYRunYuan-55W.ttf',18)
draw=ImageDraw.Draw(image)
#draw.text(position,words,font,fill)postion:文字写入的位置,words:写入的文本内容,font:文字的字体字号,fill:用rgb颜色表示法填充文字
draw.text((250,100),str,font=font,fill=(200,200,200))#写入文本内容
image.show()

pillow模块

  • 生成四个数字或字母的图形验证码
import string
import random
from PIL import Image, ImageDraw, ImageFont, ImageFilter

# 定义图片宽高
width = 240
height = 60


# 1、删除随机数字或字母
def randChar():
    # return chr(random.randint(65,90))#生成的是一个大写字母
    return ''.join(random.sample(string.ascii_lowercase + string.digits, 1))  # 随机生成一个数字或字母


# 随机生成背景颜色
def randColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))


def randColor2():
    return (random.randint(0, 127), random.randint(0, 127), random.randint(0, 127))


# 生成干扰线的位置(返回一个(x,y)坐标点)
def lineposition():
    return (random.randint(0, width), random.randint(0, height))


# 新建空白图片
image = Image.new('RGB', (width, height), (255, 255, 255))

# 设置字体字号
font = ImageFont.truetype(r'D:\Python_html\PythonProject\005pillow模块\HYRunYuan-55W.ttf', 36)

draw =ImageDraw.Draw(image)
# 给图片填充背景色(也可以用来给图片添加噪点)
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill=randColor())

# 绘制10条干扰线
for i in range(10):
    draw.line([lineposition(), lineposition()],fill=(random.randint(50, 200), random.randint(50, 200), random.randint(50, 200)), width=1)

# 绘制文字
for i in range(4):
    draw.text((60*i+10,15),randChar(),font=font,fill=randColor2())
image.show()
image.save('code5.jpg','jpeg')

pillow模块

上一篇:Tensorflow PIL 库安装


下一篇:effective java笔记之java服务提供者框架