教你怎么用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 相关文章推荐
浅谈Python中的数据类型
May 05 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
Python装饰器原理与用法分析
Apr 30 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
python进行TCP端口扫描的实现
Dec 21 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
Python常用特殊方法实例总结
Mar 22 Python
pandas的qcut()方法详解
Jul 06 Python
Django实现发送邮件功能
Jul 18 Python
python多维数组分位数的求取方式
Mar 03 Python
如何用 Python 制作 GitHub 消息助手
Feb 20 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
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
django中ImageField的使用详解
2020/12/21 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
促销活动策划方案
2014/01/12 职场文书
淘宝活动策划方案
2014/02/06 职场文书
如何写好自荐信
2014/04/07 职场文书
小学生植树节活动总结
2014/07/04 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
关于分班的感言
2015/08/04 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL