教你怎么用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实现遍历数据库并获取key的值
May 17 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
python中嵌套函数的实操步骤
Feb 27 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
三个python爬虫项目实例代码
Dec 28 Python
Python 中如何写注释
Aug 28 Python
python如何对链表操作
Oct 10 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 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
星际RPG字典
2020/03/04 星际争霸
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
区级文明单位申报材料
2014/05/15 职场文书
董事长岗位职责
2015/02/13 职场文书
学生会辞职信
2015/03/02 职场文书
驳回起诉裁定书
2015/05/19 职场文书
团队拓展训练心得体会
2016/01/12 职场文书