这其实是个老话题了
我还记得我还不会写代码的年代就看到过了,当时我是真正的loli,看到复旦大学的某个BBS的图标,用各种字符写成的“复旦大学”,各种叹为观止啊,各种膜拜啊……
这次翻出来,初衷是想把评论区的头像换了,gravatar被墙得非常凄惨,虽然有各种storage的方法之类的,但是我还是觉得不爽……也许原因是在这里留言的好像只有我自己……
参考文章
其实理论很简单
就是把图片灰度了之后从黑色到白色用密度不同的字符来代替,感觉有点隔着裤子放屁
原图
效果图
做成文字的版本其实比图片更加隔着裤子放屁,逻辑是先画一张白底图,然后在上面写文字,然后再做成上面这一步…………
效果可以是这样
:: ########## ::::## # # # # # # : # : # #: #
##### :# ##### ########## # # ############## :########::: :# :# ##### # #:# :: :# ## # :: ##### #############: :# ######## # :# #:
# : # :# # # # : : ## ##### ## # # # ####### :# ############# ###### # :# # # #: # # # :# #############
# ##### # # ## ########## # ## :#: :#: # # :###### ####### ####:## # # # :# # # # #: # #: ############ :# # # #####: ####### # #
# # # :# #: # # # ############# # # #: # # # # # :# :# # # ############# #:########### ### # # # # # # ## ######## # # # # : #
# #: # # :# #: ########## ##### # # : # # #:# # ###### # # :# # :: #::# # :#: :## ######## # :: # # # # :## # # # # :#
####::#:# # :# #: # # # : :# : # # : # #: # # : # # :: # ### :###:## # :#: # #: ############ # # # # :: # # :# :#
# ######## ########### ############## # # # ############# ##### # # # :# # #:: #: # # #:# #: :##::#: ####### # #: :: # ########## :###: ####### :# :###:
# #: # :# : # # # # :# # # ## # :# :# :: # :## :# :# # :# ## :## #### :# # # :# ############## # ###: ### # :####:
# #: # :# :# # ##### # ########## # # # # #: # #: # ### :# #: # #: #: :###: :## # # # # # :#: ## # :#### # # :#
#:# :## # #########: :# #: ######: # # #:## #: # # # :# #: # :# : # ## :# ## :# :: :##:# :# ###### # # :#: :# # # # ## # :# :# :
:### ### # :# :##: # # :#: ##: ##: # # # #####:#:# :# # :# :# ## :## ## :##: :# ## # # # ##: ::##### # :#: # ##: # #: :# :#
#: ## # #: :#: ###: # : :####: ##### :: :: # #: # :# #: ## ##: ##: ###: ## # ###### # ::###:###: # #: # :# # :# :#:::::::#:
## #####: :### #: :####### #### ####: :#### # :### #: ### # :### :# ##: :#: #### # # # ####: :## # # ### :# ########:
: #
碰到了很多坑
比如说chrome的最小字体是12pt,文字版的就觉累不爱了,图片版就transform: scale(0.1); transform-origin: 0% 0%;,然后用个div框起来隐藏大得离谱的长宽
firefox的换行间隔和chrome不一样大,这个问题直接无视了
ubuntuPC/手机/WindowsPC等宽字体不一样,最后用Courier字体搞定了
参考:Web页面的字体有哪些
新浪云python居然没有字体的const,最后我只能自己上传文泉驿,原来我还想上传思源字体的,毕竟开源字体,看看那空间就100M就算了……
在线页面
想自己玩的可以去下面这2个地方玩
相关源代码
# -*- coding: utf-8 -*-
from PIL import Image, ImageFont, ImageDraw
def write_txt(txt, font_family=Font_WQY_ZenHei, font_size=17, color='## '):
txt = unicode(txt)
font = ImageFont.truetype(font_family, size=font_size, encoding="utf-8")
img = Image.new(
'RGB', (font.getsize(txt)[0], font.getsize(txt)[1]), "white")
ImageDraw.Draw(img).text((0, 0), txt, (0, 0, 0), font)
return write_img(img, color=color)
def write_img(img, color='MNHQ$OC?7>!:-;. '):
width, height = img.size
pix = img.convert('L').load()
pic_str = ''
for h in xrange(height):
for w in xrange(width):
pic_str += color[int(pix[w, h]) * (len(color) - 1) / 255]
pic_str += '\n'
return pic_str