教你怎么用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 Web服务器Tornado使用小结
May 06 Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Python项目打包成二进制的方法
Dec 30 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 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
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
python的id()函数解密过程
2012/12/25 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python实现自动重启本程序的方法
2015/07/09 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
python 利用zmail库发送邮件
2020/09/11 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
松材线虫病防治方案
2014/06/15 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
刮痧观后感
2015/06/05 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB