情人節來了,快來給最喜歡的人打上最浪漫的馬賽克吧~

1. 按

前段時間,在微博上刷到了一條推薦。內容是這樣的:
在這裏插入圖片描述
出於好奇,我點開了,放大再放大,emmm,有點意思吖…
在這裏插入圖片描述
這四個字,對於像我這樣靦腆的DS男來說,還真不好意思說,說出來,萬一被拒絕了咋辦?
使用套路來表白,並觀察對方的反應,你大概能清楚對方是否對你也有好感,先測試下自己有幾成的把握再下手或許更穩妥。
今天就教大家一個這樣的套路:如何使用 Python 來做出來這樣的圖,有點浪漫,又有點極客。能不能拿下你女神,就要靠你(命)了。(๑•́₃ •̀๑)
PS:表白一般不過是走走過場,一定要提前通過多次暗示保證對方對你有意思,不然結果一般挺尷尬的。
這就像結婚一樣,不可能隨便在大街上拉個女的就和你結婚的,一定是提前確認好的,結婚不過是走走過場而已。

2. 效果

2.1. 原圖

  • src/demo.jpg
    首先,你得先找到一張你女神的高清圖片(儘量分辨率高點的吧,效果會好點)。
    在這裏插入圖片描述
    在這裏插入圖片描述

2.2. 效果圖

先修改textList.txt中的文本,默認的是三行文字,每一行文字都是一句話,具體可以自己設置。每一句話會生成一張不同的效果圖片。
注意textList.txt文件的編碼爲utf-8,請確保修改過後的文件的編碼爲utf-8,否則將會出現亂碼。
在這裏插入圖片描述
然後再使用我寫好的腳本運行後,就生成了這樣的效果圖,請你點擊,放大再放大。(驚喜?

  • out/demo_最漂亮的姑娘!.jpg
    在這裏插入圖片描述
  • out/demo_我喜歡你!.jpg
    在這裏插入圖片描述
  • out/demo_如果不能給你快樂,那祝你一路平安!.jpg
    在這裏插入圖片描述

3. 代碼

textList.txt

最漂亮的姑娘!
我喜歡你!
如果不能給你快樂,那祝你一路平安!

main.py

from PIL import Image, ImageDraw, ImageFont
from os.path import join
import os

font_size = 12
textLi = []


def initTextList():
	global textLi
	textLi = []
	with open("textList.txt", 'r', encoding='utf-8') as f:
		t = f.readline()
		while t:
			if not t == '':
				t = t.replace("\n", '')
				textLi.append(t)
			t = f.readline()
		print(textLi)


def character_generator(txt):
	while True:
		for t in txt:
			yield t


def convert(imgName):
	print(imgName)
	for text in textLi:
		savePath = join("./out", "%s_%s.jpg" % (str.split(imgName, ".")[0], text))
		if os.path.exists(savePath):
			break

		ch_gen = character_generator(text)
		img_path = join("./src/", imgName)
		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)

		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(savePath)


if __name__ == "__main__":
	srcPath = r"./src"
	outPath = r"./out"
	initTextList()
	if not os.path.exists(outPath):
		os.mkdir(outPath)
	li = os.listdir(srcPath)
	for i in li:
		convert(i)

4. exe可執行程序

  • 說明:將圖片放到src文件夾裏,然後運行main.exe,執行完畢程序會自動退出,效果圖在out文件夾裏。
    如需重新生成相應的效果圖,請刪除out文件夾裏相應的文件。
  • 下載:https://sn9.us/dir/13403389-37323936-c2c9ee
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章