[学习笔记]用Python简易向喜欢的人表白
前几天是情人节,就用Python图像库PIL来搞点事情。
先看图:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。其实这样看不出什么来,然后需要放大:
放大以后就能看到你相对女神说的话。
但是对于学计算机的我来说,更想琢磨是怎样的流程完成的这个图。
--------------------------------------------------------------分割线--------------------------------------------------------------
我们需要用到的是PIL库中的Image,ImageDraw,ImageFont来进行操作
我们需要做的第一步就是使用Image.open()函数来读取图像,并且使用Image.load()函数来获取像素值,图像是由像素点组成的,因此我们需要获取并通过填充字体的颜色来实现改变。
1 #使用pillow.Image读取图像,并使用load函数获取到每一个像素值 2 img_raw = Image.open(img_path) 3 img_array = img_raw.load()
当我们读取完图像并分析完以后需要新建一个画布来尽享填充。
#新建画布,并选择好使用的字体和字体大小 img_new = Image.new("RGB",img_raw.size,(0,0,0)) draw = ImageDraw.Draw(img_new) font = ImageFont.truetype('路径',font_size)
然后我们需要不断输入“XXX",来填充文字
1 #需要不断输入“xxx”,就要用while循环yield来实现一个生成器 2 def characte_generator(text): 3 while True: 4 for i in range(len(text)): 5 yield text[i]
再将字体加上颜色写入新创建的画布中
1 #给字体加上颜色写入新创建的画布中 2 for y in range(0,img_raw.size[1],font_size): 3 for x in range(0,img_raw.size[0],font_size): 4 draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None)
最后保存在图片
1 img_new.convert('RGB').save('F://love.jpeg')
这样就大功告成了。
完整代码如下:
1 from PIL import Image, ImageDraw, ImageFont 2 3 font_size = 6 4 text = " 情人节快乐 " 5 img_path = "F://Python//1.png" 6 #使用pillow.Image读取图像,并使用load函数获取到每一个像素值 7 img_raw = Image.open(img_path) 8 img_array = img_raw.load() 9 #新建画布,并选择好使用的字体和字体大小 10 img_new = Image.new("RGB",img_raw.size,(0,0,0)) 11 draw = ImageDraw.Draw(img_new) 12 font = ImageFont.truetype('C://Windows//Fonts//STXINGKA.TTF',font_size) 13 #需要不断输入“xxx”,就要用while循环yield来实现一个生成器 14 def characte_generator(text): 15 while True: 16 for i in range(len(text)): 17 yield text[i] 18 19 ch_gen = characte_generator(text) 20 #给字体加上颜色写入新创建的画布中 21 for y in range(0,img_raw.size[1],font_size): 22 for x in range(0,img_raw.size[0],font_size): 23 draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None) 24 img_new.convert('RGB').save('F://love.jpeg')
更多精彩