日常生活中,大家偶尔会在朋友圈看到把一张照片切成九张的效果,有时由一张照片切成九张照片带来的视觉盛宴是不一样的!
现在许多图片编辑工具中内置了此功能,而微信小程序中也有专门的切图工具。为了熟练巩固练习调库操作,今天就来带大家了解,如何用 Python 实现这个小功能。
让我们先来看看成果,原图为文章开头的图片,一图切九图朋友圈:
在朋友圈发布九张图片时,有一个有趣的现象:上传时,图片的顺序是乱的,需要你先像拼图游戏一样,将它们摆放好位置。
实现这个小功能,需要借助 Python 中的一个图形处理库:Pillow。
Pillow 是从著名 Python 图像处理库 PIL 发展而来,它可以执行图像压缩、图像处理等各种操作。
以下是实现其总体思路的步骤:
- 读取原图片,获取图片大小,然后与白色背景生成一个大正方形图片
- 将大正方形图片以 33 比例切割,生成 9 个小正方形图片
- 分别生成 9 张小正方形图片
根据上述思路,编写代码:
1. 为原图形填充背景,生成大正方形图
代码中的顺序可以理解为以下几个图形:在原始图片的基础上覆盖白色背景:
然后,根据宽度和高度生成规则,分别为以下两种情况:如果宽度大于高度,则图片将横向铺满正方形,而背景图片将填充上下两侧,如下所示:黑色背景可以让画面更具电影质感:
如果高度大于宽度,则图片将竖向铺满正方形,而背景图片会填充左右两侧:
完成了第一步,你就得到了一张填满背景颜色的正方形图片。
2. 对大 正方形进行切割
上述代码实际产生的情况如以下几张图片所示:
首先定位三分线:
根据左上和右下两个像素点的位置,确定新图形:
3. 将9张切割后的图片存储(操作简单,此处省略代码)
Pillow 库提供了丰富的图像处理功能,本次小工具的关键在于如何对原图进行切割。我们采用双重循环按行遍历,双重遍历是一种常见的思维模式,请予以关注。
如果您觉得源代码过于繁琐,可以将代码打包成 exe 文件使用。这样一来,在朋友圈展示您的操作技巧就轻而易举了(例如,更改背景颜色,如黑色背景)。
源代码已上传至 GitHub,欢迎感兴趣的读者通过后台回复 九宫格 获取源码地址。