ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pillow模块

2021-04-04 15:02:42  阅读:146  来源: 互联网

标签:img randint Image random jpg 模块 import pillow


Pillow模块

一、Pillow模块安装

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

二、操作图像

  • 图片缩放
# 方法一
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')
  • 添加滤镜

#以模糊滤镜为例
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()

效果图

  • 给图片添加文字水印
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()

  • 生成四个数字或字母的图形验证码
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')

标签:img,randint,Image,random,jpg,模块,import,pillow
来源: https://www.cnblogs.com/peng-blogs/p/14615866.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有