- 提供
BuildImage
类,方便图片尺寸修改、添加文字等操作 - 提供
Text2Image
类,方便实现文字转图,支持少量BBCode
标签
使用 pip 安装:
pip install pil-utils
插件依赖 skia-python 来绘制文字,对于 Linux 平台,需要安装 OpenGL 和 fontconfig:
apt-get install libfontconfig1 libgl1-mesa-glx libgl1-mesa-dri
或:
yum install fontconfig mesa-libGL mesa-dri-drivers
具体安装说明请参考 skia-python 文档
- Windows 上
SkIcuLoader: datafile missing
由于 skia 在 Windows 上需要加载 icudtl.dat
文件,临时解决办法是手动将缺失的 icudtl.dat
文件放到 Python 环境里
icudtl.dat
文件下载:https://github.com/MeetWq/pil-utils/releases/download/v0.2.0/icudtl.dat
请放置到 Python 包目录下,即 Lib\site-packages
文件夹下
相关 Issue:kyamagu/skia-python#268
- Windows 上运行时程序直接退出
skia 使用了 C++17 的特性,需要安装 Visual C++ 运行时 2017 以上版本
- Linux 下字体异常
可能是 skia 的 bug,在 Linux 上当 locate 设置为中文时,字体选择会出现异常
临时解决办法是设置为英文 locate:
export LANG=en_US.UTF-8
相关 Issue:rust-skia/rust-skia#963
BuildImage
from pil_utils import BuildImage
# output: BytesIO
output = BuildImage.new("RGBA", (200, 200), "grey").circle().draw_text((0, 0, 200, 200), "测试test😂").save_png()
Text2Image
from pil_utils import Text2Image
# img: PIL.Image.Image
img = Text2Image.from_text("@mnixry 🤗", 50).to_image(bg_color="white")
- 使用
BBCode
from pil_utils import text2image
# img: PIL.Image.Image
img = text2image("N[size=40][color=red]O[/color][/size]neBo[size=40][color=blue]T[/color][/size][align=center]太强啦[/align]")
目前支持的 BBCode
标签:
[align=left|right|center][/align]
: 文字对齐方式[color=#66CCFF|red|black][/color]
: 字体颜色[stroke=#66CCFF|red|black][/stroke]
: 描边颜色[font=Microsoft YaHei][/font]
: 文字字体[size=30][/size]
: 文字大小[b][/b]
: 文字加粗[i][/i]
: 文字斜体[u][/u]
: 文字下划线[del][/del]
: 文字删除线
- HibiKier/zhenxun_bot 基于 Nonebot2 开发,非常可爱的绪山真寻bot
- kyamagu/skia-python Python binding to Skia Graphics Library