这个七夕节,用Python为女友绘制一张爱心照片墙吧!

又是一年七夕时

今天是七夕节,中国传统的情人节。可预期到的是,估计有很多年轻的情侣们,已经为这个节日提前准备好久了吧?烂大街的套路无非就是送花、吃饭、电影院,看完电影找酒店。作为一个引爆消费的特别日子,程序猿们如何过节呢?今天公司博客举行了一个投票活动,七夕怎么过!结果多数人的投票都是闭门思过、一觉而过,难怪你们找不到女朋友啊!今天我就教你们如何不花钱,还能为心仪的她送去特别的礼物!

一行代码画爱心

这个骚操作不知道诱惑了多少人去学python,其实怎么说,如果真的代码写成那个样子,下班走夜路最好自带三级头,不然很容易挨闷棍。代码如下:
print('\n'.join([''.join([('LovePython'[(x-y)%10]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
效果:

一行代码画爱心

技术是不错,但是如果你把这个当做礼物送给女朋友,除非你是不想见到明天的太阳了...今天要交大家更犀利的骚操作!

美图秀秀

现在不说妹子的手机有没有美图秀秀之类的美化软件了,连很多爷们儿的手机都有这些软件你敢信?


美图秀秀拼图

美图秀秀有一个拼图的功能,你可以手动选择心形拼图,然后把你喜欢的图片一张一张的贴到对应的方框内,最终做出一个心形的图片...
那么今天,我就教大家使用Python,绘制一个心形的女友照片墙!

心形布局图

美图秀秀上,存在了大小图的分类,我们为了降低难度,都是用等比例的图片,进行心形绘图。首先我们需要先画出来一个心形的图片,然后按照小格子进行分类。
我拿html配合css简单做了一个心形的图,大家先来看看效果。


html绘制爱心

因为是边想边做的格子,所以拿ul标签一点一点拼出来的,没有使用js去动态生成...

土锤代码截图

怕前端大神嘲讽,就不贴代码了太占内容(文末会随python代码一起提供下载路径...)
这是一个9X9的div排列框体,我们只需要将红色的方框填充上女友的图片,即可完成心形照片墙的效果。你说自己没有女友?没关系啊,你给心仪的妹子做一个心形照片墙,说不定今天你就有了!当然你也可以为你的基友做一个,我这人很开明,不鼓励不排斥,哈哈.....

代码分析
准备图片

首先你需要整理一些女友的图片,这个是大前提!我从微信找了12张媳妇儿的照片,先保存到一个文件夹内:


媳妇儿照片
随机选填

这里有人要问了,数了一下上面红色的方格一共有52个,你只有12章图片,怎么做?照你这么说,如果你直接从相册取1000张图片,是不是还得给你画个花心大萝卜出来?
我们需要引入random模块,并且使用random.choice将图片的list进行动态选择并填充。这样就解决了大家图片数量不固定的问题,你可以放几千张选也可以只放一张!

图片合成

昨天写到的python图片转素描画中使用到了pillow库,今天我们一样用它就能实现!

    def mark_pictures(self):
        heart_image = Image.new('RGB', (128 * SideLength, 128 * SideLength))
        row = col = 0
        for side in range(SideLength * SideLength):
            if images_side_calc(col, row):
                img = Image.open(random.choice(self.image_list))
                img = img.resize((128, 128), Image.ANTIALIAS)
            else:
                img = Image.new("RGB", (128, 128), (255, 255, 255))
            heart_image.paste(img, (row * 128, col * 128))
            col += 1
            if col == SideLength:
                col = 0
                row += 1
            if row == col == SideLength:
                break
        heart_image.save("heart_image.jpg")

我们先创建一个空的画布,然后规定每张图片的固定尺寸为128X128,然后我们按照红框的计算,动态填充图片或者白色的幕布。最终将图片合成保存。
至于如何计算心形,除了最后的三角形有规律可循,上面的几行,只能每行去单独判断了images_side_calc方法如下:

def images_side_calc(row, col):
    if row == 0 and col in [1, 2, 6, 7]:
        return True
    elif row == 1 and col not in [3, 4, 5]:
        return True
    elif row == 2 and col != 4:
        return True
    elif row in [3, 4]:
        return True
    elif row >= 5 and (row - 5) < col < (13 - row):
        return True

最终效果如下:


心形照片墙

大家可以看到,由于我只使用了12张图片,所以会出现一些随机重复的图片,大家使用的话,可以多选择一些照片,效果会更好一些!
==在这里,把这份七夕礼物,送给远在重庆姐姐家避暑的媳妇儿,祝你七夕快乐!==

打包为exe文件

既然工具写好了,当然要方便那些没有python环境的人们使用啊,使用pyinstaller打包工具,无需依赖python环境,双击exe输入图片存储地址,皆可完成心形照片墙的绘制:


心形照片墙exe

当然,由于没有像昨天的素描画一样配置tkinter的GUI,只能在cmd下手动输入路径,完成照片墙的制作,如果大家喜欢可以照着昨天的内容,手写一个GUI界面。

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
公众号回复照片墙,下载打包好的exe图片转素描话工具,一起玩玩吧....
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 问答核心观点摘要: ➤ 明年全面进入盈利的状态 ➤ 好的公司不应该一上市就去借债 ➤ 买股票,买公司,最好买二次创...
    杂谈老者阅读 756评论 0 9
  • 昨天晚上看完了《爱的五种语言》这本书,然后今天早上又抽空看了一点《秘密》,我受到了很大的启发。首先,我明白适用于宁...
    爱宁说阅读 339评论 0 0
  • 2008,一场变故,离开小镇,外出谋生。 在一个旧屋子租了一层小小的阁楼,朝九晚五,打卡上班,周末却是闲的,其实恨...
    庄子自在阅读 667评论 1 12
  • 远方那一缕闪烁的光,划破七月的星空, 牵引了一场久违的梦,鲜花与掌声的荣耀, 铺满微笑与离别的路,让回忆与期待凝聚...
    蓝极天昊阅读 583评论 8 12
  • AJAX Asynchronous JavaScript and XML XMLHttpRequest 对象 属性...
    jh2k15阅读 241评论 0 0