前几天画了个心放在公众号上,有小哥哥后台要源码。说实话,那个心做得很一般,边缘毛毛草草的,图片位置也不均匀。
本着开(zhang)源(fen)的精神,我美化了下图片,把我库存的图片都贴出来。
先上图片,再说画法。
蓝色的蝴蝶心,没有标识,谁都可以拥有。。。
女神专用,刻有女神的照片,有木有。。。
也可以显示你们相识的时间。。。
相识的时间可以是动态的。。。
照片也可以是动态的。。。
照片展示完毕,下面上画法。
一,根据心形曲线,生成一组点,并生成一张指定尺寸的图片。心形曲线的公式如下:
t = np.linspace(0, pi, 200) x = np.sin(t) y = np.cos(t) + np.power(x, 2 / 3)
二,从上面那组点中取出相同长度的点。
这个要给下代码(百度或google是没有答案的,为啥我知道,因为我搜索了很久也没找到答案,后来自己写了),初学者处理这个数组还是有点困难的。
这里用到python第一课学到的知识点:赋值语句
有一组变量a,b如下:
a,b=1,2,
想得到(b=1,a=2)怎么办:
b,a=a,b
这点python比其他语言可简单多了。
下面这个小小的函数,就是从曲线上提取相等长度的代码。当然,你也可以利用数学公式提取,不过数学算法的公式好长好长。用计算机,暴力计算一下就得到结果了。
def getPointAccodingDistance(): a=sorted([choice(range(1,10)) for i in range(1,100)],reverse=False) da=[] k=0 da.append(k) for i in range(len(a)): if a[i]-a[k]==1: k = i da.append(k) return da
三,将平面坐标系(-n到n的点)中的点换算到图片格式的坐标(0到照片长宽的点)中,将图片贴到对应的位置。至此,大功告成,一张女神的心形照片墙就做好了。
四,提取系统时间,和你们相识的时间,计算下时间差。
下面的三行代码比你能搜到的都简洁。如果你找不到适合的关于计算时间差的代码,可以用我的(这里的时间是我和我老婆相识的时间~~^^~~)。
ef getDateTime():#时间差模块 e=datetime.datetime.now() s=datetime.datetime.strptime('2013-06-07 19:35:42','%Y-%m-%d %H:%M:%S') return ((e-s).days, (e-s).seconds//3600, (e-s).seconds%3600//60, (e-s).seconds%3600%60)
五,将时间的字符串按1秒每张的频率写到照片中。
六,使用imageio模块,将png或jpg格式的照片合成为gif,得到动态图。
简单吗?没有编程基础,学个一两个星期就可以写出来啦。。。快来试试吧。