日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python写520_用Python做一个520表白神器,值得收藏

發(fā)布時間:2023/12/3 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python写520_用Python做一个520表白神器,值得收藏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文最后給出了打包好的軟件,無需安裝Python環(huán)境和各種依賴,直接下載軟件,解壓后,雙擊exe文件即可使用。

先來看一下具體的效果。

運行程序。

用Python做一個520表白神器,值得收藏

點擊「選擇圖片」 選擇JPG/JPGE/PNG三種中任意一種格式的圖片,然后點擊生成表白圖片則可。這里還要注意:不管你是為了Python就業(yè)還是興趣愛好,記住:項目開發(fā)經(jīng)驗永遠(yuǎn)是核心,如果你沒有2020最新python入門到高級實戰(zhàn)教程,可以加助理微信獲取:bjmsb07

比如我選擇了一張「進(jìn)擊的巨人」圖片,其生成效果如下。

用Python做一個520表白神器,值得收藏

將圖片放大看看,會發(fā)現(xiàn)圖片全部由「我喜歡你!」構(gòu)成。

編碼時刻

我們知道圖片由不同的像素組成,每個像素都有自己的顏色,通過RGB來表示,如圖。

用Python做一個520表白神器,值得收藏

(圖出自 easyai)

RGB本身就是一個數(shù)組:(a,b,c),數(shù)組中的每一位的取值范圍都是0~255,比如黑色可以通過(0,0,0)來表示。

用Python做一個520表白神器,值得收藏

我只需要將圖片中每個像素的RGB值都取出,并使用這個RGB值作為字體的顏色則可,這樣生成的圖片從遠(yuǎn)處來看依舊會是原本圖像的輪廓。

有了具體的思路,就可以編寫代碼了。完整代碼在文末,這里先看關(guān)鍵代碼片段理解思路。

在Python中可以通過PIL來實現(xiàn)對圖片的各種操作。

首先安裝一下PIL。

pip install pillow

復(fù)制代碼

PIL消極維護(hù),一群愛好者fork了PIL的代碼,并在其之上進(jìn)行維護(hù)與修改,fork后的代碼項目稱為pillow。

首先,通過PIL.Image打開圖片并通過load方法加載圖片數(shù)組

打開圖片

img_raw = Image.open(img_path)

加載圖片的像素數(shù)組

img_array = img_raw.load()

復(fù)制代碼

然后創(chuàng)建一張新的畫布并設(shè)置好要使用的字體和字體大小,用來繪制待生成的圖像。

img_new = Image.new("RGB", img_raw.size, (0, 0, 0))

draw = ImageDraw.Draw(img_new)

font = ImageFont.truetype('SimHei.ttf', font_size)

復(fù)制代碼

最后就是循環(huán)img_raw并將圖像像素數(shù)組對應(yīng)的值賦值給字體,作為字體的顏色。

for y in range(0, img_raw.size[1], font_size):

for x in range(0, img_raw.size[0], font_size):

# 繪制文字并賦值顏色,具體為fill參數(shù)

draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None)

復(fù)制代碼

至此大功告成。

用Python做一個520表白神器,值得收藏

是否可以再優(yōu)化一下?

為了讓沒有編程經(jīng)驗的朋友可以輕松使用,我決定用tkinter做一個簡陋的界面,再使用pyinstaller進(jìn)行打包,讓各位無需安裝Python環(huán)境與PIL,直接開箱即用。

tkinter是Python內(nèi)置的桌面應(yīng)用框架,相比于PyQT5,它更加輕便,但功能也更加簡陋,但用于開發(fā)表白神器已經(jīng)足夠了,tkinter內(nèi)置于Python,不行安裝,直接使用。

這里同樣給出部分代碼,完整代碼看文末。

首先創(chuàng)建一個界面。

self.window = window

self.window.title('表白神器')

self.window.geometry('300x200')

menubar = Menu(self.window)

復(fù)制代碼

然后定義兩個按鈕與對應(yīng)的響應(yīng)方法。

選擇圖片

btn1 = Button(window, text='選擇圖片', width=15, height=2, command=self.get_img)

btn1.pack()

生成圖片

self.send_btn = Button(window, text='生成表白圖片', width=15, height=2, command=self.gen_img)

self.send_btn.pack()

復(fù)制代碼

當(dāng)點擊選擇圖片按鈕時,get_img方法會被調(diào)用,具體代碼如下。

def get_img(self):

global IMGPATH

選擇文件

filenames = askopenfilenames(filetypes=(("jpeg img", ".jpeg"), ("jpg img", ".jpg"), ("png img", "*.png")))

if len(filenames) > 0:

fnlist = [fn for fn in filenames]

fnstr = '\n'.join(fnlist)

self.l.config(text=fnstr) # 顯示選擇了什么文件

IMGPATH = fnlist

else:

self.l.config(text='目前沒有選擇任何圖片文件')

復(fù)制代碼

上述代碼中,get_img方法通過tkinter的askopenfilenames方法打開系統(tǒng)的文件選擇框,通過filetypes參數(shù)指定可以選擇的文件類型,最終該方法會返回該文件完整的文件路徑。

點擊生成圖片時,會調(diào)用gen_img方法,該方法就是調(diào)用前面編寫好生成圖像的方法,不再贅述。

最后

為了方便他人使用,我通過pyinstaller將表白程序打包。windows下的朋友可以直接下載,然后解壓使用,找到壓縮文件中的loveyou.exe,雙擊運行則可使用。

注意:表白圖片會生成在loveyou.exe的相同目錄下。

用Python做一個520表白神器,值得收藏

都懂了嗎?最后注意:不管你是為了Python就業(yè)還是興趣愛好,記住:項目開發(fā)經(jīng)驗永遠(yuǎn)是核心,如果你沒有2020最新python入門到高級實戰(zhàn)教程,可以加助理微信:bjmsb07 免費獲取!最后感謝大家閱讀,喜歡的收藏,轉(zhuǎn)發(fā)一下 。謝謝你們的陪伴。記得關(guān)注^_^

總結(jié)

以上是生活随笔為你收集整理的python写520_用Python做一个520表白神器,值得收藏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。