情人節來了,教你個用 Python 表白的技巧
作者:@明哥
公眾號:Python程式設計時光
2020年,這個看起來如此浪漫的年份,你還是一個人嗎?
難不成我還能是一條狗?
18年的時候,寫過一篇介紹如何使用 Python 來表白的文章。
雖然創意和使用效果都不錯,但有一缺點,這是那個exe檔案,女神需要開啟電腦,才有可能參與進來,進而被你成功"調戲”。
由於是很早期的文章了,應該有很多人沒有看過。
沒有看過的,你可以點選這裡檢視:用Python寫一個表白神器讓你脫離單身
提醒你一下,後天就是 2月14日了。什麼?還是一條狗呢?
行吧,那你趕上了,今天的文章,就是為你而寫。
明哥今天來教你如何使用 Python 來向心中的女神表白。
前段時間,在微博上刷到了一條推薦。內容是這樣的
出於好奇,我點開了,放大再放大,emmm,有點意思吖…
這四個字,對於像我這樣靦腆的DS男來說,還真不好意思說,說出來,萬一被拒絕了咋辦?
使用套路來表白,並觀察對方的反應,你大概能清楚對方是否對你也有好感,先測試下自己有幾成的把握再下手或許更穩妥。
今天就教大家一個這樣的套路:如何使用 Python 來做出來這樣的圖,有點浪漫,又有點極客。能不能拿下你女神,就要靠你(命)了。(๑•́₃ •̀๑)
首先,你得先找到一張你女神的高清圖片(儘量解析度高點的吧,效果會好點)。
這裡我以一張高圓圓的圖來做一下演示,原圖是這樣的(解析度是:2000*1328)。
使用我寫好的指令碼執行後,就生成了這樣一張圖,請你點選,放大再放大。(驚喜?
然後將這張圖片發給你的女神,具體話術你自己想咯。
好吧,相比女神來說,你可能更在意這是如何實現的(活該你單身)。
其實原理很簡單,程式碼也還不到20 行。
首先,來講講原理。
事實上,每一張圖片都是由一個一個的畫素點所組成的。而每個畫素點,都有自己的顏色,其顏色可以用一個陣列來表示:(a,b,c),其中每位數的取值範圍都是 0-255。
比如(0,0,0)代表黑色,(255,255,255)代表白色。
當畫素點足夠多的時候,這張照片就是我們所說的高清照片。
而如果當畫素點太少,我們的肉眼就能感知到明顯的鋸齒感。
用 Excel 畫了個圖,每一方格代表一個畫素,其中若我的字型的大小設定 5(非字號5,而是每個字佔用5個畫素),效果大概就是如下這樣子。
我只要每個畫素取出一個畫素值,並使用這個畫素做為該字的顏色即可,在畫素量夠多的情況下,從遠處看,是能看到我們原來影象的輪廓的。
有了思路,就可以開始我們的程式碼。
首先,使用 pillow.Image讀取影象,並使用load函式獲取到每一個畫素值。
img_raw = Image.open(img_path)
img_array = img_raw.load()
然後新建一張畫布,並選好你要使用的字型和字型大小。
img_new = Image.new("RGB", img_raw.size, (0, 0, 0))
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size)
由於需要不斷迴圈 “我喜歡你!”,這五個字元。所以這裡可以while迴圈 yield 來實現一個生成器。
def character_generator(text):
while True:
for i in range(len(text)):
yield text[i]
最後,要給這些字加上相應的顏色,寫入新建立的畫布中。
for y in range(0, img_raw.size[1], font_size):
for x in range(0, img_raw.size[0], font_size):
draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None)
最後將成品儲存
img_new.convert('RGB').save("F://gyy_save.jpeg")
完整程式碼如下,供你參考
from PIL import Image, ImageDraw, ImageFont
font_size = 7
text = "我喜歡你!"
img_path = "F://gyy.jpeg"
img_raw = Image.open(img_path)
img_array = img_raw.load()
img_new = Image.new("RGB", img_raw.size, (0, 0, 0))
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size)
def character_generator(text):
while True:
for i in range(len(text)):
yield text[i]
ch_gen = character_generator(text)
for y in range(0, img_raw.size[1], font_size):
for x in range(0, img_raw.size[0], font_size):
draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None)
img_new.convert('RGB').save("F://save.jpeg")
最後再多上幾張效果圖吧(對,我是海賊迷)。
- 路飛
- 索隆
- 山治
本文首發於我的個人【公眾號】:Python程式設計時光
上傳圖片可能會有壓縮,檢視效果請前往:情人節來了,教你個用 Python 表白的技巧
相關文章
- 情人節到了,手把手教你做一個表白牆,附有詳細步驟
- 七夕情人節,IT男的創意表白
- 情人節分手,FreeNginx來了Nginx
- 情人節脫單必備,程式設計師如何花式表白?程式設計師
- GitHub 的 12 個實用技巧,你 get 了幾個?Github
- 情人節到了,適合程式設計師表白的情話【保你脫單】程式設計師
- 教你用 Python 來朗讀網頁Python網頁
- Python技巧-教你用Python告白小姐姐(附程式碼)Python
- python技巧 使用值來排序一個字典Python排序
- 簡單介紹5個python的實用技巧Python
- 這8個工具,用來做python應用程式開發太合適了!Python
- 用VR學習災難逃生技巧,地震來了不再慌VR
- 教你改善企業網路安全的八個技巧
- [譯] 用個實在例子來教你掌握 Async/AwaitAI
- 分享6個Python程式設計非常實用的技巧!Python程式設計
- Python打造最強表白程式Python
- 這個情人節,工程師用阿里雲來試著表達不一樣的愛意工程師阿里
- Python開發技巧-教你製作Python進度條Python
- 別讓速度限制了你的工資!這5個實用高效的Word技巧趕快學起來!
- 請用canvas寫一個關於520浪漫表白的程式碼Canvas
- 超實用的excel操作技巧,辦公達人教你如何編輯文件來快、準、狠Excel
- 實用技巧:六招教你去掉圖片上的文字
- Python中關於進度條的6個實用技巧Python
- 每天一個實用小技巧!教你在Mac上共享WiFi密碼MacWiFi密碼
- 使用 Python Pip 的 10 個技巧Python
- Python初學者的17個技巧Python
- 教你一個小技巧:Inputstream 轉換 String
- 2.14要來了,老司機教單身狗如何用VR過情人節VR
- 用Python寫個了紅包提醒,再不怕錯過一個億了Python
- 20個Python 正規表示式應用與技巧Python
- python的函式來了_01Python函式
- 年底了!Smartbi教你做一個好看又實用的自助儀表盤!
- 秒啊,速來get這9個jupyter實用技巧
- 實戰|一個表白牆引發的“血案”
- 每天一個實用小技巧!教你在Mac上快速輸入長文字Mac
- Python 實用技巧(上)Python
- 給喜歡的女孩子寫了一段python程式碼,不用我表白,就成我女朋友了Python
- Python製作七夕表白例項專案-讓你的情人心動起來Python