这个七夕节,用Python为女友绘制一张爱心照片墙吧!【华为云技术分享】
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩
又是一年七夕时
今天是七夕节,中国传统的情人节。可预期到的是,估计有很多年轻的情侣们,已经为这个节日提前准备好久了吧?烂大街的套路无非就是送花、吃饭、电影院,看完电影找酒店。作为一个引爆消费的特别日子,程序猿们如何过节呢?今天公司博客举行了一个投票活动,七夕怎么过!结果多数人的投票都是闭门思过、一觉而过,难怪你们找不到女朋友啊!今天我就教你们如何不花钱,还能为心仪的她送去特别的礼物!
一行代码画爱心
这个骚操作不知道诱惑了多少人去学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简单做了一个心形的图,大家先来看看效果。
因为是边想边做的格子,所以拿ul标签一点一点拼出来的,没有使用js去动态生成…
怕前端大神嘲讽,就不贴代码了太占内容(文末会随python代码一起提供下载路径…)
这是一个9X9的div排列框体,我们只需要将红色的方框填充上女友的图片,即可完成心形照片墙的效果。你说自己没有女友?没关系啊,你给心仪的妹子做一个心形照片墙,说不定今天你就有了!当然你也可以为你的基友做一个,我这人很开明,不鼓励不排斥,哈哈…
代码分析
准备图片
首先你需要整理一些女友的图片,这个是大前提!我从微信找了12张媳妇儿的照片,先保存到一个文件夹内:
随机选填
这里有人要问了,数了一下上面红色的方格一共有52个,你只有12章图片,怎么做?照你这么说,如果你直接从相册取1000张图片,是不是还得给你画个花心大萝卜出来?
我们需要引入random模块,并且使用random.choice
将图片的list进行动态选择并填充。这样就解决了大家图片数量不固定的问题,你可以放几千张选也可以只放一张!
图片合成
昨天写到的python图片转素描画中使用到了pillow库,今天我们一样用它就能实现!
def mark_pictures(self):
heart_image = Image.new('RGB', ( * SideLength, * SideLength))
row = col =
for side in range(SideLength * SideLength):
if images_side_calc(col, row):
img = Image.open(random.choice(self.image_list))
img = img.resize((, ), Image.ANTIALIAS)
else:
img = Image.new("RGB", (, ), (, , ))
heart_image.paste(img, (row * , col * ))
col +=
if col == SideLength:
col =
row +=
if row == col == SideLength:
break
heart_image.save("heart_image.jpg")
我们先创建一个空的画布,然后规定每张图片的固定尺寸为128X128,然后我们按照红框的计算,动态填充图片或者白色的幕布。
至于如何计算心形,除了最后的三角形有规律可循,上面的几行,只能每行去单独判断了images_side_calc
方法如下:
def images_side_calc(row, col):
if row == and col in [, , , ]:
return True
elif row == and col not in [, , ]:
return True
elif row == and col != :
return True
elif row in [, ]:
return True
elif row >= and (row - ) < col < ( - row):
return True
最终效果如下:
大家可以看到,由于我只使用了12张图片,所以会出现一些随机重复的图片,大家使用的话,可以多选择一些照片,效果会更好一些!
在这里,把这份七夕礼物,送给远在重庆姐姐家避暑的媳妇儿,祝你七夕快乐!
打包为exe文件
既然工具写好了,当然要方便那些没有python环境的人们使用啊,使用
既然工具写好了,当然要方便那些没有python环境的人们使用啊,使用pyinstaller打包工具,无需依赖python环境,双击exe输入图片存储地址,皆可完成心形照片墙的绘制:
当然,由于没有像昨天的素描画一样配置tkinter的GUI,只能在cmd下手动输入路径,完成照片墙的制作,如果大家喜欢可以照着昨天的内容,手写一个GUI界面。
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
公众号回复照片墙,下载打包好的exe图片转素描话工具,一起玩玩吧….
期待你关注我的公众号清风Python
,如果觉得不错,希望能动动手指转发给你身边的朋友们。
作者:清风Python
HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。
这个七夕节,用Python为女友绘制一张爱心照片墙吧!【华为云技术分享】的更多相关文章
- 使用Python为中秋节绘制一块美味的月饼【华为云技术分享】
每逢佳节… 对于在外的游子,每逢佳节倍思亲.而对于996ICU的苦逼程序猿们,最期待的莫过于各种节假日能把自己丢在床上好好休息一下了.这几天各公司都陆续开始发中秋礼品了.朋友圈各种秀高颜值的月饼,所以 ...
- 用python读取word文件里的表格信息【华为云技术分享】
在企查查查询企业信息的时候,得到了一些word文件,里面有些控股企业的数据放在表格里,需要我们将其提取出来. word文件看起来很复杂,不方便进行结构化.实际上,一个word文档中大概有这么几种类型的 ...
- Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python爬虫从入门到精通——基本库re的使用:正则表达式【华为云技术分享】
置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. 正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索.替换.匹配验证都不在 ...
- Python面试的一些心得,与Python练习题分享【华为云技术分享】
版权声明:本文为CSDN博主「华为云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/devcloud/arti ...
- Python 中拼音库 PyPinyin 的用法【华为云技术分享】
[摘要] 最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 后来请教了一位大佬怎么解决文件名乱码的问题,他说这个需要正面解决 ...
- Python如何爬取实时变化的WebSocket数据【华为云技术分享】
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- 通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门【华为云技术分享】
久旱逢甘霖 西安连着几天温度排行全国三甲,也许是<哪吒之魔童降世>的剧组买通了老天,从踩着风火轮的小朋友首映开始,就全国性的持续高温,还好今天凌晨的一场暴雨,算是将大家从中暑边缘拯救回来了 ...
随机推荐
- NOIP模拟 9
%liu_runda Orz T1 随 矩阵快速幂结合概率期望 但n3无法承受 利用原根的性质,将乘法转化成加法 就变成循环矩阵n^2了 改题时苦b地卡了关:误把1当成原根的1次方,错误地认为矩阵的阶 ...
- NOIP模拟 10
(果然题目描述越人畜无害,题目难度越丧心病狂) (感觉T2大大锻炼了我的码力) T1 辣鸡 看见自己作为题目标题出现在模拟赛中,我内心无比激动 看完题面,一个N^2暴力思路已经成形 然后开始拼命想正解 ...
- P5304旅行者(比bk201还要流氓的解法)
题目如上. 暴力碾标算,n^2过百万!! 作为一道黑题它确实有点点水(如果是畜生解法的话) 就是找出两两点之间的最短路的最小值. 本来是很高深的一题,要跑两遍最短路啊,然后染色啊,再拓展什么的,但是! ...
- apache+php+mysql搭建php环境
1.首先准备解压包:zend-loader-php5.6-windows-x86_update1(nts版).php-5.6.37-nts-Win32-VC11-x86.mysql-5.5.19-wi ...
- JavaScript入门经典(第7版)读书笔记
断断续续看了十来天,终于看完了,还是学到些东西,这本书还是不错的,各方面都有涉及. 补充了下之前不完善的JS 知识 笔记一般只记必要的东西. Table of Contents 1. JavaScr ...
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
此特性需要安装Kogel.Dapper.Mssql或者Oracle 3.06及以上版本,实体类层需要安装Kogel.Dapper.Extension 3.06及以上版本 目录 [LINQ2Dapper ...
- 数据结构之队列and栈总结分析
一.前言: 数据结构中队列和栈也是常见的两个数据结构,队列和栈在实际使用场景上也是相辅相成的,下面简单总结一下,如有不对之处,多多指点交流,谢谢. 二.队列简介 队列顾名思义就是排队的意思,根据我们的 ...
- xilinx FPGA全局时钟资源的使用
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...
- Python 常用模块系列学习(3)--configparser module
configpaser 模块----用于生成和修改常见配置文档 1. config 对象的创建: import configparser #导入模块 config = configparser.Con ...
- 查找文件或目录(find、locate、whereis、which、whatis)
find命令:可以按文件名.文件的类型.用户等条件来递归查找文件或目录 find [路径] [匹配表达式] ,常用选项如下 -name filename 按文件名 -user username ...