教你怎么用Python生成九宫格照片


Posted in Python onMay 20, 2021

一、朋友圈九宫格效果图

教你怎么用Python生成九宫格照片

二、图片基本操作

  • 打开要处理的图片
  • 判断打开的图片是否为正方形
  • 如果是正方形,就进行九等分,如果不是正方形,先用白色填充为正方形,再进行九等分
  • 保存处理完的图片

第一步,先我安装一下Pillow模块

pip install pillow

1 、处理图片

在Pillow中,用Image子模块。Image.open函数会返回一个图片对象,代码如下:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')

Pillow模块是PIL模块的python3版本,因此我们导入模块时是使用下面语句:

from PIL import Image

2、 截取图片

在Image对象中,有一个crop方法,用于剪切图片。它接收一个box参数,表示要截取的区域。图片中的坐标系是以左上角为原点的,如图:

教你怎么用Python生成九宫格照片

我们来看看具体的代码:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')
# 截取图片的(0, 0, 300, 300)区域
box = img.crop((0, 0, 300, 300))
# 显示截取的区域
box.show()

3 、保存处理完的图片

保存图片的操作非常简单,我们只需要调用img的save方法即可,代码如下:

from PIL import Image
img = Image.open('lbxx.jpg')
box = img.crop((0, 0, 300, 300))
# 保存图片
box.save('1.jpg')

三、生成九宫格图片

如图:

教你怎么用Python生成九宫格照片

知道了上面的操作,下面的操作无非就是截取图片的九个区域,然后保存即可。具体代码如下:

import os
from PIL import Image
# 读取图片
im = Image.open('1kkx.jpg')
 
# 宽高各除 3,获取裁剪后的单张图片大小
width = im.size[0]//3
height = im.size[1]//3
 
# 裁剪图片的左上角坐标
start_x = 0
start_y = 0
 
# 用于给图片命名
im_name = 1
 
# 循环裁剪图片
for i in range(3):
    for j in range(3):
        # 裁剪图片并保存
        crop = im.crop((start_x, start_y, start_x+width, start_y+height))
        # 判断文件夹是否存在
        if not os.path.exists('imgs'):
            os.mkdir('imgs')
        crop.save('imgs/' + str(im_name) + '.jpg')
 
        # 将左上角坐标的 x 轴向右移动
        start_x += width
        im_name += 1
 
    # 当第一行裁剪完后 x 继续从 0 开始裁剪
    start_x = 0
    # 裁剪第二行
    start_y += height

到此这篇关于教你怎么用Python做九宫格照片的文章就介绍到这了,更多相关Python做九宫格照片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
深入理解Python 代码优化详解
Oct 27 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
Window10+Python3.5安装opencv的教程推荐
Apr 02 Python
python set内置函数的具体使用
Jul 02 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 Python
Python+Appium自动化测试的实战
Jun 30 Python
用 Python 元类的特性实现 ORM 框架
May 19 #Python
浅谈Python 中的复数问题
May 19 #Python
Python机器学习之基础概述
Python机器学习之PCA降维算法详解
Python 批量下载阴阳师网站壁纸
May 19 #Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 #Python
python使用pywinauto驱动微信客户端实现公众号爬虫
You might like
PHP的开发框架的现状和展望
2007/03/16 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
python opencv进行图像拼接
2020/03/27 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
财务助理岗位职责
2013/11/10 职场文书
前台文员我鉴定
2014/01/12 职场文书
高中教师评语大全
2014/04/25 职场文书
综合实践活动总结
2014/05/05 职场文书
大学迎新生标语
2014/10/06 职场文书
三峡人家导游词
2015/01/31 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书