[Feature]: 增加markdown转图片的原生支持
这是一个?
新功能
详细描述
这样使用更稳定,而不是使用插件
推荐用什么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(黑体)或其他中文字体文件。 - 如果你在 Windows 系统上,可以使用系统自带的中文字体,如
C:\\Windows\\Fonts\\simhei.ttf。
- 请确保你提供的
-
文本换行:
- 使用
textwrap.wrap来自动处理文本换行,以适应图片宽度。
- 使用
-
图片大小:
- 你可以根据需要调整图片的宽度和高度,以及字体大小。
这个方案完全基于纯Python实现,轻量且支持中文,可以满足你的需求。如果有任何问题或需要进一步的调整,请随时告诉我。
看看这个?gpt-4o的建议
同样遇到了该问题,试了半天发现还是转了回来。
纯python方案使用markdown2 和 Pillow需要处理的内容太多了,html的格式渲染需要自己手动完成