教你怎么用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中的变量、引用、拷贝和作用域的问题
Apr 07 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
Python函数返回值实例分析
Jun 08 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python3实现基于用户的协同过滤
May 31 Python
python实现最小二乘法线性拟合
Jul 19 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
python批量提取图片信息并保存的实现
Feb 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
PHP异步调用socket实现代码
2012/01/12 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
jQuery 入门讲解1
2009/04/15 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
python输出数学符号实例
2020/05/11 Python
Python操作Excel的学习笔记
2021/02/18 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
市场安全管理制度
2014/01/26 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
质量整改通知单
2015/04/21 职场文书
提档介绍信范文
2015/10/22 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
2019大学生实习报告
2019/06/21 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers