Python3 - pillow的基本用法(第三天)
Posted 韩俊强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 - pillow的基本用法(第三天)相关的知识,希望对你有一定的参考价值。
文章目录
pillow
1.什么是pillow
PIL – Python Imaging library, 专属于Python2.x中对图像进行处理的。
pillow 是 PIL的一个分支, 支持Python3
2.安装pillow的安装
安装三方包的工具是用的是pip, 默认是国外网站:https://pypi.python.org/simple
这个网站是用来下载安装第三方工具的, 因为这是一个国外的网站, 下载速度慢, 容易请求超时; 所以建议使用国内镜像:https://mirrors.aliyun.com/pypi/simple
更新pip的下载源
临时更新
在下载安装的时候, 临时用一下
pip install 安装包名 -i 国内下载源
永久更新
1.如果是通过cmd来下载的话, 怎么永久更新
在当前系统用户下创建一个文件夹 pip, 在这个文件夹下创建一个pip.ini配置文件, 在文件中添加一下内容 [global]
index-url=国内下载源
2.如果通过pycharm下载的话:
Windows: File - setting - project - python interpreter - 点击下方的+号 - Manager Repositories --- 编辑添加即可
Apple: Prefernces - project - python interpreter - 点击下方的+号 - Manager Repositories --- 编辑添加即可
国内下载源
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
Windows 添加方式:
用户名/pip/pip.ini
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
pip install pillow
pip 相关的指令
pip install 安装包 --- 安装指定的三方包
pip uninstall 安装包 --- 卸载指定的三方包
pip list --- 显示已经安装的安装包
3.加载图片
from PIL import Image # 操作图片的类型
# 加载图片
currentImage = Image.open('./image/000.png')
print(currentImage)
# 显示图片
# image.show()
# 获取原本的尺寸
print(currentImage.size) # (512, 512) 元祖类型的数据 currentImage.size[0] ---- 512 currentImage.size[1] ---- 512
# 获取模式
print(currentImage.mode) # RGB
# 显示图片的格式
print(currentImage.format) # PNG
# 图片的详细信息
print(currentImage.info)
# 保存图片
# currentImage.save('./lufei.png')
4.修改图片
from PIL import Image, ImageFilter
# 1. 读取图片
currentImg = Image.open('./image/000.png')
'''
# 2. 修改图片尺寸
print(currentImg.size)
image1 = currentImg.resize((currentImg.size[0]//3, currentImg.size[1]//3))
# image1.show()
# 保存
image1.save('./image/lufei_small.png')
'''
# 3. 修改图片的色系 --- 由彩色转为灰色
# image2 = currentImg.convert('L')
# image2.show()
# image2.save('./image/lufei_gray.png')
# 4. 对图片进行过滤操作
# image3 = currentImg.filter(ImageFilter.EMBOSS) # 浮雕
# image3 = currentImg.filter(ImageFilter.CONTOUR) # 铅笔画
# image3 = currentImg.filter(ImageFilter.FIND_EDGES) # 描边形式
# image3 = currentImg.filter(ImageFilter.GaussianBlur) # 高斯模糊滤镜
# image3 = currentImg.filter(ImageFilter.BLUR) # 模糊效果
# image3.show()
# 5. 裁剪图片
# 设置一个边缘间距 [left, upper, right, lower]
# 左上角和右下角
# image4 = currentImg.crop(box=(10, 20, 20, 20))
# image4.show()
# 6. 图片旋转
# image5 = currentImg.rotate(90)
# image5.show()
# 设置旋转点
# image6 = currentImg.rotate(45, center=(0, 0))
# image6.show()
# 7. 图片翻转
image7 = currentImg.transpose(Image.FLIP_LEFT_RIGHT) # FLIP_TOP_BOTTOM 左右或上下翻转
image7.show()
5.打马赛克
from PIL import Image
# 读取图片
currentImg = Image.open('./image/000.png')
# 读取粘贴的图片
paste_img = Image.open('./image/2-4.png')
# 修改一下尺寸
p_img = paste_img.resize((100, 100))
# currentImg.paste(p_img) # 默认把图片粘贴到左上角
# currentImg.show()
# box 要粘贴的左上角要定位到哪一点
# currentImg.paste(p_img, box=[currentImg.size[0] - p_img.size[0], 0])
# currentImg.show()
# 把自己的照片粘贴到右下角, 加上自己的收款二维码
currentImg.paste(p_img, box=[currentImg.size[0] - p_img.size[0], currentImg.size[1] - p_img.size[1]])
currentImg.show()
6.打文字马赛克
from PIL import Image, ImageDraw, ImageFont # ImageDraw 是在图片上进行绘制
# 读取图片
currentImg = Image.open('./image/2-4.png')
# 添加文字
draw = ImageDraw.Draw(currentImg) # 把要进行绘制的图片传递到绘制对象中
# draw 通过这个对象进行绘制
# text(坐标(x, y), 内容, file=颜色, font=字体)
# draw.text(xy=(10, 10), text='Hello world!') # 默认不支持汉字编码
font = ImageFont.truetype('./font/simheittf.ttf',size=30)
# draw.text((10, 10), text='你好呀,哈哈!', font=font)
draw.text((10, 10), text='你好呀,哈哈!', font=font, fill=(255,0,0,1))
currentImg.show()
7.自定义图片
from PIL import Image,ImageDraw
import random
# mode 图片的颜色系列, RGB彩色, L灰色
# size 图片大小
# color 设置rgb值, 图片的底色, 默认为黑色
img = Image.new('RGB',(400, 400), color=(255, 0, 0))
pz = Image.open('./image/000.png')
pz = pz.resize((200, 200))
img.paste(pz, box=(0, 0))
carImg = Image.open('./image/022.png')
carImg = carImg.resize((200, 200))
img.paste(carImg, box=(img.size[0] - carImg.size[0],img.size[1] - carImg.size[1]))
draw = ImageDraw.Draw(img)
# 双层循环生成颜色块
for i in range(pz.size[1]//10):
for c in range((img.size[0] - pz.size[0]//10)):
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
draw.rectangle((img.size[0]-pz.size[0] + c*10, i*10, img.size[0]-pz.size[0]+c*10+10, i*10+10), fill=(r, g, b))
img.show()
以上是关于Python3 - pillow的基本用法(第三天)的主要内容,如果未能解决你的问题,请参考以下文章