教你怎么用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局部赋值的规则
Mar 07 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
几款好用的python工具库(小结)
Oct 20 Python
python里glob模块知识点总结
Jan 05 Python
用pushplus+python监控亚马逊到货动态推送微信
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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
php array_map()数组函数使用说明
2011/07/12 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
json简单介绍
2008/06/10 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
小程序指纹验证的实现代码
2018/12/04 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python3爬取数据至mysql的方法
2018/06/26 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
创先争优一句话承诺
2014/05/29 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
五年级小学生评语
2014/12/26 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
撤诉书怎么写
2015/05/19 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
Go遍历struct,map,slice的实现
2021/06/13 Golang