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

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
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读