图像处理PILLOW的使用
1.安装
pip install Pillow
2.使用
1)图片缩放
from PIL import Image
im = Image.open('dog.jpg')
w,h = im.size #获取图像的尺寸
im.thumbnail((w/2,h/2)) #将图像缩放50%
#im.show() #显示图片
im.save('dog_thumbnail.jpg') #保存图片
效果图:
2.图片模糊
im = Image.open('dog.jpg')
im2 = im.filter(ImageFilter.BLUR)
im2.save('dog_blur.jpg')
效果图:
3.生成验证码
from PIL import ImageDraw,ImageFont,ImageFilter
import random #返回一个A-Z的随机字母
def randomChar():
return chr(random.randint(65,90)) #随机颜色
def randomColor1():
return (random.randint(64,255),random.randint(64,255),random.randint(64,255)) #随机颜色2
def randomColor2():
return (random.randint(32,127),random.randint(32,127),random.randint(32,127)) width = 60 * 4
height = 60
#创建白色图片
image = Image.new('RGB',(width,height),(255,255,255))
#创建font对象
#OSError: cannot open resource 需要指定字体库的系统路径
#font = ImageFont.truetype("Arial.ttf",36)
font = ImageFont.truetype("C:/windows/fonts/Arial.ttf",36)
#创建Draw对象,用于向白色背景图片上绘图
draw = ImageDraw.Draw(image)
#填充每一个像素
for x in range(width):
for y in range(height):
draw.point((x,y),fill=randomColor1()) #输出文字
for i in range(4):
draw.text((60*i+10,10),randomChar(),font=font,fill=randomColor2()) #模糊
image = image.filter(ImageFilter.BLUR)
image.save("captcha.jpg")
效果:
4.裁图,旋转,粘贴
from PIL import Image
im = Image.open('dog.jpg')
box = (100,50,350,250) #要裁剪的矩形区域,坐标以左上角为原点
region = im.crop(box) #返回裁剪到的图片
#region.show()
region = region.transpose(Image.ROTATE_180) #对图像进行旋转
im.paste(region,box) #将旋转后的图像粘回原图
im.show()
效果图:
5.添加图片水印:
from PIL import Image image = Image.open('dog.jpg')
logo = Image.open('logo.png')
logoW,logoH= logo.size
imageW,imageH = image.size
image.paste(logo,(imageW - logoW, imageH - logoH))
image.show()
效果:
6.添加透明文字水印:
参考: http://pythoncentral.io/watermark-images-python-2x/
def add_watermark(in_file, text,font,out_file='watermark.jpg', angle=23, opacity=0.25):
'''
:param in_file: 要添加水印的图片
:param text: 文字水印内容
:param out_file: 添加水印后的图片
:param font:水印字体
:param angle: 水印旋转角度
:param opacity: 水印透明度
'''
img = Image.open(in_file).convert('RGB')
watermark = Image.new('RGBA', img.size, (0, 0, 0, 0))
size = 2
n_font = ImageFont.truetype(font, size)
#getsize返回水印文字对应字体大小的宽度和高度
n_width, n_height = n_font.getsize(text)
#找到使得水印文字宽度最接近图片宽度的字体大小
while n_width + n_height < watermark.size[0]:
size += 2
n_font = ImageFont.truetype(font, size)
n_width, n_height = n_font.getsize(text)
draw = ImageDraw.Draw(watermark, 'RGBA')
draw.text(((watermark.size[0] - n_width) / 2,
(watermark.size[1] - n_height) / 2),
text, font=n_font)
watermark = watermark.rotate(angle, Image.BICUBIC)
alpha = watermark.split()[3]
#通过降低亮度和对比度来降低水印的透明度
alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
#设置透明度
watermark.putalpha(alpha)
#添加水印
Image.composite(watermark, img, watermark).save(out_file, 'JPEG') FONT = 'C:/Windows/fonts/Arial.ttf'
add_watermark('dog.jpg','python',font=FONT)
效果图:
相关资料:
https://pillow.readthedocs.io/en/latest/handbook/tutorial.html
http://pillow-cn.readthedocs.io/zh_CN/latest/handbook/tutorial.html
图像处理PILLOW的使用的更多相关文章
- 杂项之图像处理pillow
杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/latest/ pillow中文 ...
- 第二篇:杂项之图像处理pillow
杂项之图像处理pillow 杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/ ...
- 图像处理pillow模块
pillow模块: -->基本的图像处理模块 Pip install pillow from PIL import Image #1.读取图片 im = Image.open('/test.jp ...
- 潭州课堂25班:Ph201805201 爬虫基础 第九课 图像处理- PIL (课堂笔记)
Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...
- python爬虫基础15-python图像处理,PIL库
Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...
- 6 python高级数据处理和可视化
6.2. pyplot作图 1.折线图和散点图 t = np.arange(0,4,0.1) plt.plot(t,t,'o',t,t+2,t,t**2,'o') plt.show() 2.柱线图 p ...
- python武器库
1,开发库You-GetYouTube/Youku/Niconico视频下载器Zipline一个Pythonic的交易算法库docopt为Python程序创造一个优雅的命令行界面PDFMinerPyt ...
- Python图像处理库:Pillow 初级教程
Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...
- 图像识别的前期工作——使用pillow进行图像处理
pillow是个很好用的python图像处理库,可以到官方网站下载最新的文件.如果官网的任何PIL版本都不能与自己的python版本对应,或安装成功后发现运行出错,可以尝试从一个非官方的whl网站下载 ...
随机推荐
- hdu--1029 编程之美 在数组a中 (元素个数n n是奇数)找一个数字 它出现的次数大于(n+1)/2
我为什么总是犯这些愚蠢错误啊,还是自己逻辑不够严谨. 努力ing...... #include <iostream> #include <cstdio> #include &l ...
- 集合框架 ArrayList LinkedList(待续)
ArrayList中存储的元素的内存空间是连续的, LinkedList内存空间不是连续的 集合对象不能被序列化到硬盘中 http://blog.csdn.net/eson_15/article/de ...
- Windows 清理磁盘
====手动清理C盘(开始\运行\cleanmgr,选择C盘...)或者如下右键C盘,选择属性,点击通用页签下方[磁盘清理]按钮.磁盘清理界面,中间部分可以选择要清理的项目,可以全选.然后点击下方的清 ...
- C++学习(三十三)(C语言部分)之 队列
队列测试代码笔记如下: #include<stdio.h> #define SIZE 10 typedef struct Queue { int data[SIZE]; //队列的容量 i ...
- Java 8 实战
Java8 函数式接口,方法传递与Lambda Java8新特性 方法作为参数传递给方法,方法成为一等公民 Lambda,匿名函数 Stream API : 将一系列相关操作用流水线的思想分配到CPU ...
- 《DSP using MATLAB》Problem 6.11
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- 【BZOJ1305】【CQOI2009】 dance跳舞
看menci的博客点出二分的思路然后做出来,menci太强辣 原题: 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲. ...
- mongodb 通过mongodump来备份Sharded Cluste分片集群
1,mongodb所有组件官方文档地址:https://docs.mongodb.com/manual/reference/command/,所有的基础组件都在里面,包括备份恢复的mongodump. ...
- 【点击项目属性】Target runtime Apache Tomcat v7.0 is not defined
这个项目是去年用同一个eclipse做的,但是今年原封不动导入的时候,确发现这个东西 tomcat选成我们本地的tomcat8就可以了 泼菲解决.
- software download
Develop Sourceinsight 3.50.0066 http://pan.baidu.com 这个版本支持输入文件名的一部分来查找文件,而不像3.50.0029必须输入完整的文件名 VFP ...