一行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. Java实现自定义注解开发

    Java实现自定义注解开发 一直都对注解开发挺好奇的,最近终于有时间自己实践了一把,记录一下 万一后期会用到呢 哈哈哈 首先我们了解一下自定义注解的标准示例,注解类使用 @interface 关键字修 ...

  2. MongoDB自学------(4)MongoDB主从搭建

    MongoDB复制原理 mongodb的复制至少需要两个节点.其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据. mongodb各个节点常见的搭配方式为:一主一从.一主多 ...

  3. Spring Cloud(一):入门篇

    Spring Cloud 简介 Spring Cloud 是一个基于 Spring Boot 实现的微服务架构开发工具,可以快速构建分布式系统中的某些常用模式,如配置管理.服务治理.断路器.智能路由. ...

  4. C#发送邮件(内容中有图片)

    用微软的System.Net.Mail发送邮件,有些时候发邮件需要邮件内容中添加图片. 对象解释 SmtpClient类:允许应用程序使用简单邮件传输协议 (SMTP) 发送电子邮件.MailAddr ...

  5. C# 从图片中截取一部分图片,并返回所截取的图片

    /// <summary> /// 从图片中截取一部分图片 /// </summary> /// <param name="fromImagePath" ...

  6. java架构之-负载均衡-Ribbon 的使用

    一. 什么是负载均衡负载均衡就是分发请求流量到不同的服务器.负载均衡一般分为两种:1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 二. spring- - cloud- - ...

  7. Java学习 1.2——简述JVM,JRE,JDK的关系

    在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...

  8. Java中的“scanf()、cin()、input()"

    最近在写一个Java程序时遇到一个问题,就是如何在Java里面输入数值,又叫做获取键盘输入值. 因为c语言里面有scanf(),C++里面有cin(),python里面有input().Java里面有 ...

  9. [20191101]通过zsh计算sql语句的sql_id.txt

    [20191101]通过zsh计算sql语句的sql_id.txt 1.简单介绍以及测试使用zsh遇到的问题:--//前段时间写的,链接http://blog.itpub.net/267265/vie ...

  10. 关于sql sp_send_dbmail 发送邮件的怪异问题

    存储过程,其实就是将sp_send_dbmail采用参数的方式发送邮件,存储过程如下: ALTER PROCEDURE [dbo].[SP_Email_Send] @EmailTo varchar(m ...