图像处理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网站下载 ...
随机推荐
- flask数据库的迁移
需要的插件:flask-migrate 在每次修改模型之后,将修改的东西映射到数据库中. 使用flask-migrate 必须借助flask_scripts,这个包的所有MigrateCommand ...
- inner join 与一般笛卡尔积的区别
inner join 与一般笛卡尔积的区别:inner join是笛卡尔积的特殊形式.如果有表a和表b,表a有m条记录,表b有n条记录,则一般笛卡尔积后得到的记录条数是m*n条,记录之间的组合是随意的 ...
- 斐波那契 - pythoon实现
def fn_1(n): if n == 0 : return n elif n == 1 : return n else: a = [0,1] for i in range(2,n): a.appe ...
- Blender 插件整理
系统自带插件列表: 好用的第三方插件: Align Vertices to Grease Pencil, 对齐顶点到蜡笔, https://blenderartists.org/t/addon-a ...
- $.each $.map $.filter 区别 Script
$('section.required').each(function () { var type = $(this).attr('data-type'); if (type == 'MULTIPLE ...
- python.numpy.std()计算矩阵标准差
>>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) # 计算全局标准差 1.1180339887498949 > ...
- 【shell编程】之基础知识-常用命令
一.Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式: echo string 您可以使用echo实现更复杂的输出格式控制. ...
- (惊艳)对象序列化和反序列--Hibernate的查询和新增极其相似
Hibernate几个关键字持久化,ORM(关系对象映射)(数据库中关系称作是一张表) 应用在项目中,刘一从写的查询代码,每次都挂掉,想要弄出测试数据,自己想着把查询出来的复杂数据弄到文件里自己要是去 ...
- MySQL Disk--SSD和HDD的性能
========================================================= 机械硬盘的性能 7200转/分的STAT硬盘平均物理寻道时间是9ms 10000转/ ...
- 使用netstat、lsof查看端口占用情况
netstat netstat用来查看系统当前系统网络状态信息,包括端口,连接情况等,常用方式如下: netstat -atunlp,各参数含义如下: -t : 指明显示TCP端口 -u : ...