Python图片裁剪实例代码(如头像裁剪)


Posted in Python onJune 21, 2017

今天就来说个常用的功能,图片裁剪,可用于头像裁剪啊之类的。用的还是我们之前用的哪个模块pillow

1. 安装pillow

用pip安装

pip install pillow

2. 图片裁剪

2.1 准备一张图片

Python图片裁剪实例代码(如头像裁剪)

2.2 我们使用的是Image中的crop(box)功能,它需要一个参数box,元组 类型,元组包括4个元素,如:
(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)

如图:(x, y, x+w, y+h), x,y是裁剪框左上角的坐标, x+w,y+h是右下角的坐标

Python图片裁剪实例代码(如头像裁剪)

2.3 上代码1-裁剪:

# -*-coding:utf-8-*-
from PIL import Image
im = Image.open("renren.jpeg")
# 图片的宽度和高度
img_size = im.size
print("图片宽度和高度分别是{}".format(img_size))
'''
裁剪:传入一个元组作为参数
元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)
'''
# 截取图片中一块宽和高都是250的
x = 100
y = 100
w = 250
h = 250
region = im.crop((x, y, x+w, y+h))
region.save("./crop_test1.jpeg")

# 截取图片中一块宽是250和高都是300的
x = 100
y = 100
w = 250
h = 300
region = im.crop((x, y, x+w, y+h))
region.save("./crop_test2.jpeg")

运行结果:

(venv) allenwoo@~/renren/code$ python test.py
图片宽度和高度分别是(500, 500)

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

2.4 上代码2-平均切割成4块:

# 把图片平均分成4块
# 第1块
w = img_size[0]/2.0
h = img_size[1]/2.0
x = 0
y = 0
region = im.crop((x, y, x+w, y+h))
region.save("./crop_average-1.jpeg")

# 第2块
x = w
y = h
region = im.crop((x, y, x+w, y+h))
region.save("./crop_average-2.jpeg")

# 第3块
x = 0
y = h
region = im.crop((x, y, x+w, y+h))
region.save("./crop_average-3.jpeg")

# 第4块
x = w
y = 0
region = im.crop((x, y, x+w, y+h))
region.save("./crop_average-4.jpeg")

运行结果:

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

2.5 上代码3-旋转图片:

# 旋转图片
# 左旋转45度
im = im.rotate(45)
im.save("./rotate-l45.jpeg")

# 右旋转30度
im = im.rotate(-30)
im.save("./rotate-r30.jpeg")

# 右旋转45度, 并裁剪一块
im = im.rotate(-30)
x = 50
y = 50
w = 150
h = 150
region = im.crop((x, y, x+w, y+h))
region.save("./rotate-r30-crop.jpeg")

运行结果:

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

Python图片裁剪实例代码(如头像裁剪)

好了,到这里你完全可以做个头像裁剪了的后端操作了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现2014火车票查询代码分享
Jan 10 Python
Python break语句详解
Mar 11 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
redis之django-redis的简单缓存使用
Jun 07 Python
Python配置虚拟环境图文步骤
May 20 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Tensorflow 多线程设置方式
Feb 06 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
Python中Qslider控件实操详解
Feb 20 Python
Python编程实战之Oracle数据库操作示例
Jun 21 #Python
Python获取SQLite查询结果表列名的方法
Jun 21 #Python
基于hashlib模块--加密(详解)
Jun 21 #Python
详谈Python基础之内置函数和递归
Jun 21 #Python
浅谈python内置变量-reversed(seq)
Jun 21 #Python
python 简单的绘图工具turtle使用详解
Jun 21 #Python
利用python批量给云主机配置安全组的方法教程
Jun 21 #Python
You might like
很好用的PHP数据库类
2009/05/27 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP的PSR规范中文版
2013/09/28 PHP
Yii中表单用法实例详解
2016/01/05 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
javascript this详细介绍
2016/09/19 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
深入探究node之Transform
2017/07/20 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
node.js基础知识小结
2018/02/26 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
自荐信结尾
2013/10/27 职场文书
实习单位推荐信范文
2013/11/27 职场文书
车间班组长的职责
2013/12/13 职场文书
应届毕业生自我评价分享
2013/12/15 职场文书
2015年党性分析材料
2014/12/19 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python