一行python的表白
首先祭出绝招,用1行python表白:
print('
'.join([''.join([('I LOVE U'[(x-y) % 8] 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)]))
效果如下:
UI LOVE LOVE UI L
OVE UI LOVE UI LO UI LOVE UI LOVE U
LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI L
LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI LOV
LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE
OVE UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE U
VE UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI
E UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI
UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI L
UI LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI LO
LOVE UI LOVE UI LOVE UI LOVE UI LOVE UI LO
OVE UI LOVE UI LOVE UI LOVE UI LOVE UI LO
VE UI LOVE UI LOVE UI LOVE UI LOVE UI LOV
UI LOVE UI LOVE UI LOVE UI LOVE UI LO
LOVE UI LOVE UI LOVE UI LOVE UI LO
OVE UI LOVE UI LOVE UI LOVE UI LO
UI LOVE UI LOVE UI LOVE UI L
LOVE UI LOVE UI LOVE UI
VE UI LOVE UI LOVE UI
I LOVE UI LOVE
VE UI LOV
I L
L
原理大概是:
words, line = "I LOVE U", []
for y in range(15, -15, -1):
line_c = []
letters = ''
for x in range(-30, 30):
expression = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
if expression <= 0:
letters += words[(x-y) % len(words)]
else:
letters += ' '
line_c.append(letters)
line += line_c
print('
'.join(line))
进一步可以制作成动画:
def heart_text_animation(words="I LOVE U"):
import time
for c in words.split():
line = []
for y in range(15, -15, -1):
line_c = []
letters = ''
for x in range(-30, 30):
expression = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
if expression <= 0:
letters += c[(x-y) % len(c)]
else:
letters += ' '
line_c.append(letters)
line += line_c
print('
'.join(line))
time.sleep(1)
照片墙
依赖: pip install Image clize
使用: python picture_wall.py --help
Usage: picture_wall.py [OPTIONS] [text...]
生成照片墙
Arguments:
text... Text of picture wall, if not defined this will generage a rectangle picture wall
Options:
-s, --font-size=INT font size of a clear value (default: 20)
-e, --edge-len=INT sub picture's egde length (default: 50)
-w, --wall-width=INT picture number of rectangle width (default: 20)
-l, --wall-length=INT picture number of rectangle length (default: 10)
-d, --pic-dir=STR picture's path (default: ./img)
-o, --out-dir=STR output dir (default: ./out/)
-p, --font-path=STR font path (default: ./demo.ttf)
-m, --method=STR decrator method, now accept 'alpha', 'size' (default: alpha)
Other actions:
-h, --help Show the help
for example:
./picture_wall.py I Love U -s 30 -e 10
./picture_wall.py 我爱你 -s 30 -e 10
如果指定为相册文件夹的话,将得到如下效果(文件夹下图片太多而且太大的话会比较慢):
也可以选择尺寸的方式调整子图,例如: python picture_wall.py 1314 -m size
TODO
  • 子照片的处理方式有待提升,目前采用的只是根据字体像素透明度控制透明度,还可以抽象出来让用户选择控制方式~比如:
  • 根据字体像素透明度控制子图形状
  • 根据字体像素透明度控制子图颜色亮度
  • 或者直接采用圆形裁剪子图
爱心情书
依赖: pip install jieba numpy pandas matplotlib wordcloud scipy wordcloud
使用: python heart_cloud_word.py --help
Usage: ./heart_cloud_word.py [OPTIONS] [par...]
生成文字云
Arguments:
par...
Options:
-t, --text-file=STR text file that contain all you word (default: ./data/love_letter.txt)
-s, --stop-file=STR the stop word which can't be considered (default: ./data/stopwords.txt)
-c, --color-img=STR the color map img (default: ./data/pink.jpg)
-m, --mask-file=STR the mask img for the word
-o, --out-file=STR output file path which should with sufix of png/jpg... (default: ./out/word_cloud.png)
-p, --font-path=STR font path (default: ./demo.ttf)
Other actions:
-h, --help Show the help
for example:
./heart_cloud_word.py
TODO
  • 增加背景照片和注释文字形成最终类似下图的效果
 

不知道怎么向女神表白?Python三大神技分分钟带你成功逆袭!的更多相关文章

  1. python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。

    python三大神器之virtualenv   pip, virtualenv, fabric通称为pythoner的三大神器. virtualenv virtualenv------用来建立一个虚拟 ...

  2. python三大神器之virtualenv

    virtualenv virtualenv用来管理python项目环境,隔离出一个只属于这个项目的虚拟python环境(windows和Linux用法一样). 首先你需要安装virtualenv模块 ...

  3. python三大神器之pip

    pip是一款管理python各类包和库的工具,非常好用.下文介绍常用的一些命令. ● 安装:pip install 库名 也可以指定版本:pip install 库名=版本 ● 卸载:pip unin ...

  4. python三大神器之fabric

    Fabric Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具.它提供了丰富的同 SSH 交互的接口,可以用来在本地或远程机器上自动化.流水化地执行 Shell 命令. ...

  5. python三大神器之fabric(2.0新特性)

    fabric经常出现在自动化运维领域,批量处理一些运维工作.fabric是在paramiko之上又封装了一层,操作起来更加简单易用. 本来只是想写个博客记录一下,然后发现之前写的代码不能运行了,报以下 ...

  6. python学习之路(一)屌丝逆袭之路

    变量                                                                                                  ...

  7. Python三大器之生成器

    Python三大器之生成器 生成器初识 什么是生成器 生成器本身属于迭代器.继承了迭代器的特性,惰性求值,占用内存空间极小. 为什么要有生成器 我们想使用迭代器本身惰性求值的特点创建出一个可以容纳百万 ...

  8. Python 三大神器

    Python 三大神器 Python 中有很多优秀的包,本文主要讲一下 pip, virtualenv, fabric 1. pip 用来包管理 文档:https://pip.pypa.io/en/l ...

  9. Python三大器之迭代器

    Python三大器之迭代器 迭代器协议 迭代器协议规定:对象内部必须提供一个__next__方法,对其执行该方法要么返回迭代器中的下一项(可以暂时理解为下一个元素),要么就引起一个Stopiterat ...

随机推荐

  1. jupyter notebook改变行间图片大小

    jupyter notebook使用起来代码效果很直接,这是我最喜欢的一点,但是主题单一,后来改了一下主题.也可以接受了,但是还有一个问题是显示图片太小我们可以用两个方法来改变它. 一.可以通过rcP ...

  2. ubuntu18.04 安装 flameshot截图工具

    安装flameshot:https://github.com/lupoDharkael/flameshot sudo apt-get install flameshot 然后设置一个快捷键,设置> ...

  3. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU量产神器RT-Flash常见问题

    对于MCUBootUtility,RT-Flash工具,有任何使用上的问题,可以在本博客下留言,也可以扫码加入QQ交流群.

  4. JMeter命令行执行+生成HTML报告

    1.为什么用命令行模式 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死: 所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行: 命令 ...

  5. 企业架构如何实施的简介(TOGAF深度好文)

    本文来自企业架构学院: BangEA:如何实施企业架构? IT不仅是开展业务的手段,而且正在迅速演变为业务,IT绩效会直接影响企业的盈利能力,但很多企业并没有适时或充分的让IT组织参与业务的规划和决策 ...

  6. js的try catch使用心得

      1 try catch的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误.也就是说你很清楚知道这里是有可能”出错“的,而且你很清楚知道什么前提下会出错,你就是要故意利用报错信息来区分错误 ...

  7. google跟踪代码管理器gtm无法给相同class元素绑定click事件埋点解决

    Google 跟踪代码管理器是一个跟踪代码管理系统 (TMS),可以帮助您快速轻松地更新网站或移动应用上的跟踪代码及相关代码段(统称为“代码”).将一小段跟踪代码管理器代码添加到项目后,您可以通过网页 ...

  8. ios中仿蚂蚁森林动画效果

    参考链接:https://www.jianshu.com/p/0ba9d80f8e77 demo下载链接:https://gitee.com/ovix/TreeWithRandomFruitBtn

  9. Flutter学习笔记(19)--加载本地图片

    如需转载,请注明出处:Flutter学习笔记(19)--加载本地图片 上一篇博客正好用到了本地的图片,记录一下用法: 首先新建一个文件夹,这个文件夹要跟目录下 然后在pubspec.yaml里面声明出 ...

  10. Spring Boot 2 使用Servlet、Listener和Filter配置

    开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目. 一.使用Servlet配置 1.修改启动类 Demo ...