520使用Python實(shí)現(xiàn)“我愛你”表白
摘要: 每到情人節(jié)、七夕節(jié),不少小伙伴大伙伴們都會(huì)遇到這樣一個(gè)世紀(jì)問題——怎么給女朋友/老婆一個(gè)與眾不同的節(jié)日驚喜。今天給大家分享一個(gè)獨(dú)特的表白方法——用“我愛你”拼出心愛人的模樣!
每到情人節(jié)、七夕節(jié),不少小伙伴大伙伴們都會(huì)遇到這樣一個(gè)世紀(jì)問題——怎么給女朋友/老婆一個(gè)與眾不同的節(jié)日驚喜。
你說送花吧,到時(shí)候朋友圈里一劃,全部都是送花的,女票:“沒創(chuàng)意!”,遂卒;
你說送禮物吧,要是送的禮物不合心意,女票:“你根本不懂我!”,又卒;
你說逛街買買買吧,摸摸空空的口袋,默默把這個(gè)想法丟到一邊...
今天,就和大家分享一個(gè)獨(dú)特的表白方法——用“我愛你”拼出心愛人的模樣!

成品圖!

什么?看不清長啥樣?放大來康康

想做出這樣的照片嗎?那么~我們現(xiàn)在就開始啦~
一. 需要準(zhǔn)備的有
女票超級(jí)無敵可愛美膩的照片 1張!
python (這里用的是python3.7)
需要的用到的庫
cv2:用來讀取照片
PIL:用來生成新的圖片
性能比較OK的電腦
(如果沒有接觸過python,不想/不會(huì)配環(huán)境、裝cv2、PIL之類的庫,或者電腦性能不太夠,強(qiáng)烈推薦使用華為云的ModelArts進(jìn)行開發(fā)~直接解決環(huán)境配置、電腦性能的各種問題~)
二. 基本思路
要實(shí)現(xiàn)這樣的效果,首先需要有一張照片,提取其像素信息,然后賦給排布滿文字的新圖片,就能得到如上圖所示的一張新圖片啦!
廢話不多說,接下來就開始吧~
三.操作流程
1.首先導(dǎo)入用到的庫(兩者的作用在1中已有介紹)
from PIL import Image, ImageDraw, ImageFont
2.然后開始聲明繪圖的方法
這里有兩個(gè)參數(shù),分別是原圖片的路徑和要寫的文字
def draw(pic, draw_text):
3.接著讀取圖片
使用cv2中的imread方法讀取圖片信息,
使用PIL中的Image方法創(chuàng)建一個(gè)新的圖片,其尺寸和源圖片一致,背景為白色
blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")
drawObj = ImageDraw.Draw(blank) # 告訴程序,我們接下來就要在這個(gè)圖上寫字啦!
4.聲明繪圖的一些參數(shù)(這些參數(shù)都是我經(jīng)過多次試驗(yàn)得到的最佳大小~)
m = 9 # 字體的大小
font_path = '你使用字體的位置' # 字體的路徑
font = ImageFont.truetype(font_path, size=m) # 將字體信息賦給font變量,供后續(xù)使用
5.接下來就是最關(guān)鍵的一步!把文字寫上去,并按照源圖片給圖片上色
通過兩個(gè)for循環(huán),依次定位到每個(gè)文字所在的色塊(中間間隔n是因?yàn)槲淖直认袼貕K大得多,不可能完全按照每個(gè)像素的位置和色彩來排布)
使用text()方法填入帶色彩的文字,幾個(gè)參數(shù)分別代表:
[j, i] -- 坐標(biāo)位置
draw_text[int(j / n) % len(draw_text)] -- 找到當(dāng)前該寫入哪個(gè)文字了(比如“我愛你”中的第幾個(gè)字)
fill=(img[i][j][2], img[i][j][1], img[i][j][0]) -- 代表源圖片對(duì)應(yīng)位置的顏色(三個(gè)分別代表RBG顏色值)
for i in range(0, img.shape[0], n):
for j in range(0, img.shape[1], n):
drawObj.text(
[j, i],
draw_text[int(j / n) % len(draw_text)],
fill=(img[i][j][2], img[i][j][1], img[i][j][0]),
font=font
) # 按句子的順序填充文字
6.寫入完成,導(dǎo)出圖片
7.調(diào)用我們封裝好的方法~
輸入圖片路徑和目標(biāo)文字,運(yùn)行~一張獨(dú)一無二的表白圖就大功告成!
draw('1.jpg', "我愛你")
附上全代碼(記得把字體路徑改成自己電腦的喲~)
from PIL
import Image, ImageDraw, ImageFont
def draw(pic, draw_text):
img = cv2.imread(pic)
blank = Image.new("RGB", [img.shape[1],
img.shape[0]
], "white")
drawObj = ImageDraw.Draw(blank)
n = 10
m = 9
font = ImageFont.truetype(font_path,
size = m)
for i in range(0, img.shape[0], n):
for j in range(0, img.shape[1], n):
drawObj.text(
[j, i],
draw_text[int(j / n) % len(draw_text)],
fill = (img[i][j][2], img[i][j][1],
img[i][j][0]),
font = font
)
blank.save('img_' + pic)
draw('1.jpg', "我愛你")
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 教你利用Python+Turtle繪制簡易版愛心表白
- Python繪制的愛心樹與表白代碼(完整代碼)
- python實(shí)現(xiàn)跨年表白神器--你值得擁有
- 一篇文章教你用python畫動(dòng)態(tài)愛心表白
- python如何寫出表白程序
- 程序員的七夕用30行代碼讓Python化身表白神器
- 很酷的python表白工具 你喜歡我嗎
- python3實(shí)現(xiàn)表白神器
- python仿抖音表白神器
- python抖音表白程序源代碼
- 我喜歡你 抖音表白程序python版
- python七夕浪漫表白源碼
- python浪漫表白源碼
- python愛心表白 每天都是浪漫七夕!
- 520必備!這些Python表白代碼祝你脫單成功
相關(guān)文章
Python基于回溯法子集樹模板解決數(shù)字組合問題實(shí)例
這篇文章主要介紹了Python基于回溯法子集樹模板解決數(shù)字組合問題,簡單描述了數(shù)字組合問題并結(jié)合實(shí)例形式分析了Python回溯法子集樹模板解決數(shù)字組合問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Python利用FlashText算法實(shí)現(xiàn)替換字符串
FlashText算法是由?Vikash?Singh?于2017年發(fā)表的大規(guī)模關(guān)鍵詞替換算法,比正則表達(dá)式替換快M倍以上,這個(gè)M是需要替換的關(guān)鍵詞數(shù)量,關(guān)鍵詞越多,F(xiàn)lashText算法的優(yōu)勢(shì)就越明顯。本文將詳細(xì)這一算法,需要的可以參考一下2022-03-03
Python使用Virtualenv進(jìn)行虛擬環(huán)境管理的詳細(xì)步驟
Virtualenv是一個(gè)Python環(huán)境管理工具,它允許開發(fā)者在不同的項(xiàng)目之間獨(dú)立創(chuàng)建和管理各自的Python環(huán)境,通過virtualenv,你可以為每個(gè)項(xiàng)目安裝特定版本的Python解釋器以及項(xiàng)目的依賴庫,本文給大家介紹了Python使用Virtualenv進(jìn)行虛擬環(huán)境管理的詳細(xì)步驟2024-09-09
Pandas對(duì)數(shù)值進(jìn)行分箱操作的4種方法總結(jié)
分箱是一種常見的數(shù)據(jù)預(yù)處理技術(shù)有時(shí)也被稱為分桶或離散化,他可用于將連續(xù)數(shù)據(jù)的間隔分組到“箱”或“桶”中。本文將使用python?Pandas庫對(duì)數(shù)值進(jìn)行分箱的4種方法,感興趣的可以了解一下2022-05-05
python工具快速為音視頻自動(dòng)生成字幕(使用說明)
這篇文章主要介紹了python工具快速為音視頻自動(dòng)生成字幕(使用說明),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
pycharm導(dǎo)入第三方庫的兩種方法(永不報(bào)錯(cuò))
這篇文章主要介紹了pycharm導(dǎo)入第三方庫的兩種方法(永不報(bào)錯(cuò)),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
Tensorflow2.10使用BERT從文本中抽取答案實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Tensorflow2.10使用BERT從文本中抽取答案實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

