环境与工具5:让文字变成图片 | python | alfred
小白:让文字变成图片?很简单啊,先在微信上打几个字,再截图,就是图片啦!
小程:但是这种方式,你不能预先设置字体的属性,以及图片的背景颜色等。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
本文介绍一种简单的办法,让输入的文字显示到一张图片中,并且可以对字体与颜色进行设置。 这里用python来实现这个功能,并且结合mac系统上的alfred来使用。
小白:alfred?
小程:mac系统上的神奇武器,你值得拥有!
有两个程序要写。
一个是创建图片,设置图片的背景颜色与字体的颜色,再把输入的内容写到图片。
另一个程序,打开图片,把文字显示出来。
马上开工,先是创建文字图片:
# -*- coding: utf-8 -*-
from PIL import Image,ImageDraw,ImageFont
from bs4 import BeautifulSoup
import sys
g_temppng='tempclip.png'
def cal_text_length(text):
en_text_length=13
zh_text_length=18
zh_text_size=3
offset=8
if BeautifulSoup(text).originalEncoding=='utf-8':
w=zh_text_length*text.__len__()/zh_text_size+offset
else:
w=en_text_length*text.__len__()
return w
def generate_image(text,background_color,fill_color):
height=128
font_size=18
w=cal_text_length(text)
width=w+50
img=Image.new('RGB',(width,height),background_color)
draw=ImageDraw.Draw(img)
text_to_draw=unicode(text,'utf-8')
font = ImageFont.truetype('/Library/Fonts/华文黑体.ttf', font_size)
draw.text(((width - w) / 2, (height - font_size) / 2), text_to_draw, font=font, fill=fill_color)
del draw
img.save(g_temppng)
if __name__ == '__main__':
text="no input"
if len(sys.argv)>1:
text=sys.argv[1]
generate_image(text,'#000000','#ffffff')
然后是打开图片:
# -*- coding: utf-8 -*-
from PIL import Image
g_temppng='tempclip.png'
if __name__ == '__main__':
img=Image.open(g_temppng)
img.show()
最后,为了能快速运行这两个程序,这里借且alfred(mac系统下)来实现,写两个workflow,如下:
这个演示很简单,但是这种用phthon写代码,再用框架快速执行的思路,却是很有用的思路,很多有用的事情都可以做到,比如拷贝文件、查看天气、爬取电影、英文翻译、发送邮件、查md5、看网页,自动化,等等,这个思路值得借鉴。

更多精彩