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的基本用法(第三天)的主要内容,如果未能解决你的问题,请参考以下文章

python脱产第三天

python pillow模块用法

Python之路第三天

python3 第三天

python3.0 第三天 文件操作

python3第三天(运算符)