Python渲染Latex到图片文件

基于Python3.5、matplotlib包与MikTex
下面提供renderlatex函数,返回png文件的二进制数据

from matplotlib import rcParams
rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
import matplotlib
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
import io.BytesIO
import matplotlib.pyplot as plt

def renderlatex(formula, fontsize=18, dpi=300, format_='png'):
    """Renders LaTeX formula into image.
    """
    fig = plt.figure(figsize=(0.01, 0.01))
    fig.text(0, 0, u'${}.format(formula), fontsize=fontsize)
    buffer_ = io.BytesIO()
    fig.savefig(buffer_, dpi=dpi, transparent=True, format=format_, bbox_inches='tight', pad_inches=0.0)
    return buffer_.getvalue()

*如果需要获得图片的尺寸,鄙人不才,在matplotlib范围内尚未找到合适的方法,不过可以借助于PIL.Image包。

import io.BytesIO
import PIL.Image as img

b=BytesIO()
b.write(renderlatex(formula))
b.seek(0)
i=img.open(b)
(h,w)=i.size

*若要保存到文件,打开文件后用write方法即可。

*若用于打印请务必保存渲染时的dpi值,png文件标准中并未规定需要保存dpi信息,获得png文件的尺寸后尺寸除以dpi值得到图片实际尺寸(inch),插入到文档中时,以HTML为例,可设置width与height值单位选择in,由于in单位一般不推荐用于HTML,可将长度(inch)除以72得到点数(pt),设置长宽单位为pt即可,依此法可保证HTML打印效果与显示效果一致

留下评论