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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python装饰器使用示例及实际应用例子
Mar 06 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python实现简单中文词频统计示例
Nov 08 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
如何Python使用re模块实现okenizer
Apr 30 Python
用Python写一个简易版弹球游戏
python urllib库的使用详解
Apr 13 #Python
用Python将库打包发布到pypi
python xlwt模块的使用解析
python 爬取豆瓣网页的示例
简述python四种分词工具,盘点哪个更好用?
Apr 13 #Python
python自动化调用百度api解决验证码
You might like
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
ext实现完整的登录代码
2008/08/08 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
python append、extend与insert的区别
2016/10/13 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Python-openCV开运算实例
2020/07/05 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
安全责任书模板
2014/07/22 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript