上才

在准备素材的下午

核桃君被朋友圈的消息刷屏了:

“开学有望啦!”“开学还会远么?”

好想开学啊真的么?

......

好想开学啊真的么?

似乎陷入了“套娃”这个游戏

这种循环、迭代的思想好像很熟悉

在没有收到官方开学通知的现在

不如让我们一起来学习一项编程小技能:

用python制作图片套娃吧

原理解释

首先,我们要理解,如何实现图片的套娃呢,我们知道,每一张图片都是由像素构成的,我们以每一个像素作为基本单元,例如下图中左边的图片,我们假设它是10x10像素的大小,我们称其为上级。

而我们想要在这张图片的每个像素位置上,按照一定的条件进行筛选,并插入和他一模一样的图片(称之为下级),那么新组成的图片的大小就是(10x10,10x10),也就是x的尺寸了,而我们进行筛选的条件就是根据图片本身的像素值大小而决定的。

这里的关键是我们可以用newImg.paste这个函数将每个像素用图片(也可以是函数的形式)替代

原理了解了,下面我们来动手操作一下吧!

开始编写代码

准备工作

python3.0以上版本,PIL图像处理库

在命令行中运行pipinstallPillow,安装PIL

编程开始,导入库和函数

首先,我们需将文字套娃看作是一个对象,那么这个对象有什么属性呢,通过上面的原理讲解,我们知道文字套娃应该有上级图片和下级图片两个属性,以及我们添加了用来替代像素的图片这个参数。这里我们就需要为文字套娃创建这两个实例属性值,但是我们要如何获取这两个实例属性呢?

这里,我们就需要再去创建一个实例函数,来帮助我们创建上级图片和下级图片这两个实例属性。程序如下图所示:

功能实现

现在有了实例属性之后,接下来就是我们完成开篇讲述的文字套娃功能的时候了,程序如下所示:

我们只需要输入想要创建的文字,还有像素值的大小,函数便会返回创建好的图片对象。

·上述的makeDoll函数中,我们首先按照上级图片和下级图片的大小,创建一个空白的图片;

·然后针对上级图片中每个像素的数值,插入我们的下级图片,从而完成对于图片的嵌套;

·这里函数还返回了嵌套之后的图片,方便我们将其作为上级图片,继续执行嵌套功能;

·就如同我们程序的执行入口处,我们首先完成了一次嵌套后,将返回的结果作为了上级图片,继续执行了嵌套;

最终,我们实现了两层的用图片作为上一个图片的像素的嵌套。

结果展示

(点击查看原图)

以上就是核桃君为大家带来的利用图像嵌套思想,用PIL库函数对于图片套娃的实现。运用这思维大家就可以自己实现“图片套娃”了,更多代码用法期待小白杨们在实现过程中去发现!

这里核桃君还发现了



转载请注明地址:http://www.hetaorena.com/htrpz/7365.html