图像处理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网站下载 ...
随机推荐
- 神坑,使用gcc对opencv重编译
工具 cmake-3.9.1 opencv-3.3.0 gcc-6.3.0 前几天为了装eclipse的CDT,把minggw里的make改了,今天突然想学opencv,可是只找到了vc版本,千辛万 ...
- [codeforces][Educational Codeforces Round 53 (Rated for Div. 2)D. Berland Fair]
http://codeforces.com/problemset/problem/1073/D 题目大意:有n个物品(n<2e5)围成一个圈,你有t(t<1e18)元,每次经过物品i,如果 ...
- 模块化,AMD规范
模块化:代码量比较大,可能会有几个人同时写一个页面,同样写在一个文件里面,可能会有冲突,模块化可以解决代码的冲突(匿名函数调用,自己调用自己,就是立即执行函数) 团队的分工更加的明确 异步的执行: A ...
- 【mysql】创建索引
一.联合唯一索引 项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:t_aa 表中有aa,bb两个字段,如果不希望有2条 ...
- 普林斯顿数学指南(第三卷) (Timothy Gowers 著)
第V部分 定理与问题 V.1 ABC猜想 V.2 阿蒂亚-辛格指标定理 V.3 巴拿赫-塔尔斯基悖论 V.4 Birch-Swinnerton-Dyer 猜想 V.5 卡尔松定理 V.6 中心极限定理 ...
- 替换元素(replace,replace_if,replace_copy,replace_copy_if)
replace 审阅range中的每个元素,把old_value替换为new_value template <class ForwardIterator,class T> void rep ...
- day5 大纲
01 昨日内容回顾 list: 增: append insert(index,object) extend() 迭代着追加 删: pop(默认删除最后一个)按照索引去删除 有返回值 remove 按照 ...
- operator <<”不明确
在声明重载的输出运算符<< 时,如果声明时的返回类型是std::ostream,而不是std::ostream&,但是定义的时候又加了引用的话,那么就会报“operator < ...
- laravel 打印完整sql语句
laravel5 用DB自带的getQueryLog方法直接打印: DB::connection()->enableQueryLog(); // 开启QueryLog \App\User::fi ...
- java 字符集 Charset
字符集就是为每个字符编个号码.如ASCII编码中,字符 'A' 的号码为 65 (或二进制01000001):GBK编码中,字符 '国' 对应的号码为47610 . 编码:将字符序列转换成二进制序列. ...