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爬虫技巧汇总
Sep 28 Python
Python基于回溯法子集树模板解决取物搭配问题实例
Sep 02 Python
tensorflow中next_batch的具体使用
Feb 02 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
python 数据提取及拆分的实现代码
Aug 26 Python
python elasticsearch环境搭建详解
Sep 02 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
python实现移动木板小游戏
Oct 09 Python
Python进程间的通信之语法学习
Apr 11 Python
用Python写一个简易版弹球游戏
python urllib库的使用详解
Apr 13 #Python
用Python将库打包发布到pypi
python xlwt模块的使用解析
python 爬取豆瓣网页的示例
简述python四种分词工具,盘点哪个更好用?
Apr 13 #Python
python自动化调用百度api解决验证码
You might like
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
vuejs指令详解
2017/02/07 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python中enumerate函数遍历元素用法分析
2016/03/11 Python
windows下ipython的安装与使用详解
2016/10/20 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
拖鞋店创业计划书
2014/01/15 职场文书
员工年终自我评价
2014/09/14 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
2015年外联部工作总结
2015/04/03 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
单位综合评价意见
2015/06/05 职场文书
工作会议简报
2015/07/20 职场文书
生活小常识广播稿
2015/08/19 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书