最近看到mcmod百科上有个叫成就生成器的东西,于是也想用Python做一个。
大致思路:
一张成就图像,需要有底图,图标和和说明文字三个部分。
成就的图标比较难搞,我使用的是Minecraft Wiki上的物品栏图标,大致思路是先把Sprite全图下载下来,然后再从Wiki的Lua脚本里获取物品名和图标位置的映射关系,然后保存在一个字典里备用。
因为成就的底图有透明度,所以不能上传到博客园的相册里,于是我把它放在了其他图床(SM.MS)上,地址见代码(base_url)。
Minecraft的英文字体(minecraft.otf)在网上是比较好找的,下载后和脚本文件放在同一目录下即可。不过,现在网上还是找不到Minecraft原生的中文字体(即像素化的仿宋字体),所以要显示中文,就只能用系统自带的simsun.ttc将就一下了。
注意图像的绘制需要用到Pillow模块,html的处理和提取需要BeautifulSoup模块,需使用pip命令安装。
代码如下:
from urllib.request import urlopen, urlretrieve
from bs4 import BeautifulSoup
from PIL import Image, ImageFont, ImageDraw
import re, string, os, requests
size = 32
listsize = 32
page_url = r'https://minecraft.gamepedia.com/Module:InvSprite'
sprite_url