Open bobandbrony opened 6 months ago
推荐用什么markdown转图片的方案?要轻便、支持中文的
推荐用什么markdown转图片的方案?要轻便、支持中文的
这我就不清楚了,我不是做开发的,但我之前用的chatbot项目就支持,你可以去看看?地址https://github.com/lss233/chatgpt-mirai-qq-bot
目前调研,转图片只找到有wkhtmltoimage或者playwright的方案,这些方案都需要非纯python实现的依赖软件,暂时不考虑添加此类依赖。如果你有找到纯python实现的、轻量的、支持中文的md转image方案,会加快这个解决进度。
目前调研,转图片只找到有wkhtmltoimage或者playwright的方案,这些方案都需要非纯python实现的依赖软件,暂时不考虑添加此类依赖。如果你有找到纯python实现的、轻量的、支持中文的md转image方案,会加快这个解决进度。
理解你的需求,希望找到一个纯Python、轻量且支持中文的Markdown转图片方案。以下是一个可以满足你需求的方案,基于 markdown2
和 Pillow
,并且考虑了中文字体的支持。
markdown2
和 Pillow
安装依赖:
pip install markdown2 pillow beautifulsoup4
代码实现:
import markdown2
from PIL import Image, ImageDraw, ImageFont
from bs4 import BeautifulSoup
import textwrap
def markdown_to_image(markdown_text, output_path, font_path='arial.ttf', font_size=20):
# 将 Markdown 转换为 HTML
html = markdown2.markdown(markdown_text)
# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(html, 'html.parser')
text = soup.get_text()
# 设置图片大小和字体
width, height = 800, 600
image = Image.new('RGB', (width, height), 'white')
draw = ImageDraw.Draw(image)
# 尝试加载指定路径的字体文件
try:
font = ImageFont.truetype(font_path, font_size)
except IOError:
# 如果无法加载指定字体文件,使用默认字体
font = ImageFont.load_default()
# 自动换行处理
margin = 10
offset = 10
for line in textwrap.wrap(text, width=70): # 70 是每行字符数,可根据需要调整
draw.text((margin, offset), line, font=font, fill='black')
offset += font.getsize(line)[1] + 5 # 行高调整
# 保存图片
image.save(output_path)
markdown_text = """
# 标题
这是一个支持中文的 Markdown 示例。
- 项目1
- 项目2
"""
markdown_to_image(markdown_text, 'output.png', font_path='/path/to/your/chinese/font.ttf')
字体文件:
font_path
指向一个支持中文的字体文件,例如 SimHei.ttf
(黑体)或其他中文字体文件。C:\\Windows\\Fonts\\simhei.ttf
。文本换行:
textwrap.wrap
来自动处理文本换行,以适应图片宽度。图片大小:
这个方案完全基于纯Python实现,轻量且支持中文,可以满足你的需求。如果有任何问题或需要进一步的调整,请随时告诉我。
看看这个?gpt-4o的建议
这是一个?
新功能
详细描述
这样使用更稳定,而不是使用插件