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程序的执行原理
Apr 11 Python
Django中使用第三方登录的示例代码
Aug 20 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
Python assert语句的简单使用示例
Jul 28 Python
手写一个python迭代器过程详解
Aug 27 Python
详解Python self 参数
Aug 30 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
python读取pdf格式文档的实现代码
Apr 01 Python
用Python写一个简易版弹球游戏
python urllib库的使用详解
Apr 13 #Python
用Python将库打包发布到pypi
python xlwt模块的使用解析
python 爬取豆瓣网页的示例
简述python四种分词工具,盘点哪个更好用?
Apr 13 #Python
python自动化调用百度api解决验证码
You might like
是否存在第一台收音机的说法
2021/03/01 无线电
一个简单的PHP投票程序源码
2007/03/11 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python 元类实例解析
2018/04/04 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
物业公司的岗位任命书
2014/06/06 职场文书
员工团队活动方案
2014/08/28 职场文书
小升初自荐信范文
2015/03/05 职场文书
小学总务工作总结
2015/08/13 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
详解python的异常捕获
2022/03/03 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python