教你怎么用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实现人民币大写转换
Jun 20 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
Python构建图像分类识别器的方法
Jan 12 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
提高python代码运行效率的一些建议
Sep 29 Python
opencv实现图像几何变换
Mar 24 Python
详解Python中下划线的5种含义
Jul 15 Python
python中urllib包的网络请求教程
Apr 19 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
javascript事件问题
2009/09/05 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
python获得图片base64编码示例
2014/01/16 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python基于locals返回作用域字典
2020/10/17 Python
使用python实现学生信息管理系统
2021/02/25 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
领导接待方案
2014/03/13 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
投资意向书
2014/07/30 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android