欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

情人节来了,快来给最喜欢的人打上最浪漫的马赛克吧~

程序员文章站 2024-03-19 08:55:16
...

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
相关标签: Python 爱情

上一篇: 跃锦成龙之插入音乐

下一篇: