Python生成九宫格图片的示例代码


Posted in Python onApril 14, 2021

一、前言

大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下:

Python生成九宫格图片的示例代码

要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现一下九宫格图片的生成。在开始之前,我们需要安装一下Pillow模块,语句如下:

pip install pillow

下面我们先来看看一些简单的图片操作。

二、图片基本操作

今天我们会使用到三个操作,分别是读取图片、保存图片和截取图片。下面我们分别来看看。

2.1 读取图片

在Pillow中,我们最常用的就是Image子模块。其中读取图片的操作就是通过Image.open函数来实现。Image.open函数会返回一个图片对象,我们来看看具体的代码:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')

Pillow模块是PIL模块的python3版本,因此我们导入模块时是使用下面语句:

from PIL import Image

后面我们就可以通过操作img对象来实现对图片的操作。

2.2 截取图片

在Image对象中,有一个crop方法,可以用于剪切图片。它接收一个box参数,表示要截取的区域。参数是一个元组,元素内容分别是左上角x,y坐标,右下角x,y坐标。图片中的坐标系是以左上角为原点的,如图:

Python生成九宫格图片的示例代码

假如我们需要截取图片如下区域:

Python生成九宫格图片的示例代码

那我们的参数应该如下:

img.crop((x1, y1, x2, y2))

我们来看看具体的代码:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')
# 截取图片的(0, 0, 300, 300)区域
box = img.crop((0, 0, 300, 300))
# 显示截取的区域
box.show()

2.3 保存图片

保存图片的操作非常简单,我们只需要调用img的save方法即可,我们直接看代码:

from PIL import Image
img = Image.open('lbxx.jpg')
box = img.crop((0, 0, 300, 300))
# 保存图片
box.save('1.jpg')

我们直接调用save方法,传入保存的路径即可。

三、生成九宫格图片

知道了上面的操作,下面的操作无非就是截取图片的九个区域,然后保存即可。具体代码如下:

from PIL import Image
# 读取图片
im = Image.open('lbxx.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))
        crop.save('imgs/' + str(im_name) + '.jpg')

        # 将左上角坐标的 x 轴向右移动
        start_x += width
        im_name += 1

    # 当第一行裁剪完后 x 继续从 0 开始裁剪
    start_x = 0
    # 裁剪第二行
    start_y += height

我们先创建一个imgs目录,然后运行程序就可以在imgs下看到截取好的图片。

Python生成九宫格图片的示例代码

不过上面的代码还有些不便之处,就是我们需要手动创建imgs目录。我们可以借助os模块来帮我们自动创建改目录,修改后的代码如下:

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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
用Python计算三角函数之atan()方法的使用
May 15 Python
Python中扩展包的安装方法详解
Jun 14 Python
Python快速排序算法实例分析
Nov 29 Python
详解Python中where()函数的用法
Mar 27 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
如何学习Python time模块
Jun 03 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
Pytest测试框架基本使用方法详解
Nov 25 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 Python
用Python写一个简易版弹球游戏
python urllib库的使用详解
Apr 13 #Python
用Python将库打包发布到pypi
python xlwt模块的使用解析
python 爬取豆瓣网页的示例
简述python四种分词工具,盘点哪个更好用?
Apr 13 #Python
python自动化调用百度api解决验证码
You might like
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
js 字符串操作函数
2009/07/25 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
js利用拖放实现添加删除
2020/08/27 Javascript
Python多进程机制实例详解
2015/07/02 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
酒店led欢迎词
2014/01/09 职场文书
网站美工岗位职责
2014/04/02 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS