教你怎么用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科学画图代码分享
Nov 29 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
python从入门到精通 windows安装python图文教程
May 18 Python
django最快程序开发流程详解
Jul 19 Python
python实现批量修改服务器密码的方法
Aug 13 Python
Python3 翻转二叉树的实现
Sep 30 Python
Python属性和内建属性实例解析
Jan 14 Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 Python
Pytorch转tflite方式
May 25 Python
Python filter()及reduce()函数使用方法解析
Sep 05 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
BBS(php & mysql)完整版(三)
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
Vue自定义指令详解
2017/07/28 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
Django在win10下的安装并创建工程
2017/11/20 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
个人校本研修方案
2014/05/26 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
学习经验交流会总结
2015/11/02 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript