Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C或C+中的乳胶制作PNG | jpeg+; 我正在寻找一个C或C++的库(或者更聪明的解决方案),它将从胶乳代码中生成一个图像文件(PNG JPEG)。使用软件包是一个先决条件_C++_C_Latex_Png_Jpeg - Fatal编程技术网

从C或C+中的乳胶制作PNG | jpeg+; 我正在寻找一个C或C++的库(或者更聪明的解决方案),它将从胶乳代码中生成一个图像文件(PNG JPEG)。使用软件包是一个先决条件

从C或C+中的乳胶制作PNG | jpeg+; 我正在寻找一个C或C++的库(或者更聪明的解决方案),它将从胶乳代码中生成一个图像文件(PNG JPEG)。使用软件包是一个先决条件,c++,c,latex,png,jpeg,C++,C,Latex,Png,Jpeg,现在我正在考虑将.tex文件编译成.dvi,并使用dvipng获得.PNG 还可以将.tex文件编译为.ps文件,然后通过外部实用程序(如pstopng或pstoedit)将其转换为.PNG 但这些解决方案很麻烦,而且并不总是可移植的。我想将这种转换透明地集成到我的程序中 我以前多次使用dvipng路由,但都是用python编写的。这是一条普通的道路,很多人都走过。下面是代码,为您提供一些入门信息,以防有人需要Python代码我知道你要求C/C++;这是为初学者或其他人准备的。这是为生成方程准备

现在我正在考虑将.tex文件编译成.dvi,并使用dvipng获得.PNG

还可以将.tex文件编译为.ps文件,然后通过外部实用程序(如pstopngpstoedit)将其转换为.PNG


但这些解决方案很麻烦,而且并不总是可移植的。我想将这种转换透明地集成到我的程序中

我以前多次使用dvipng路由,但都是用python编写的。这是一条普通的道路,很多人都走过。下面是代码,为您提供一些入门信息,以防有人需要Python代码我知道你要求C/C++;这是为初学者或其他人准备的。这是为生成方程准备的,但将其应用于更一般的结构将是微不足道的。它确实支持软件包

就透明整合而言,我感觉到了你的痛苦。当然,并不是每个人都有特克斯/乳胶,如果他们没有,那通常会很痛苦。我认为,最好的方法是将该功能作为web服务提供——当然,这并不总是一种选择

最后,请注意dvipng的所有选项。它们通过各种防alisaing选项等控制外观。我对它们进行了广泛的调整,以获得我认为好看的外观

def geneq(f, eq, dpi, wl, outname, packages):
    # First check if there is an existing file.
    eqname = os.path.join(f.eqdir, outname + '.png')

    # Open tex file.
    tempdir = tempfile.gettempdir()
    fd, texfile = tempfile.mkstemp('.tex', '', tempdir, True)
    basefile = texfile[:-4]
    g = os.fdopen(fd, 'w')

    preamble = '\documentclass{article}\n'
    for p in packages:
        preamble += '\usepackage{%s}\n' % p

    preamble += '\pagestyle{empty}\n\\begin{document}\n'
    g.write(preamble)

    # Write the equation itself.
    if wl:
        g.write('\\[%s\\]' % eq)
    else:
        g.write('$%s$' % eq)

    # Finish off the tex file.
    g.write('\n\\newpage\n\end{document}')
    g.close()

    exts = ['.tex', '.aux', '.dvi', '.log']
    try:
        # Generate the DVI file
        latexcmd = 'latex -file-line-error-style -interaction=nonstopmode ' + \
               '-output-directory %s %s' % (tempdir, texfile)
        p = Popen(latexcmd, shell=True, stdout=PIPE)
        rc = p.wait()
        if rc != 0:
            for l in p.stdout.readlines():
                print '  ' + l.rstrip()
            exts.remove('.tex')
            raise Exception('latex error')

        dvifile = basefile + '.dvi'
        dvicmd = 'dvipng --freetype0 -Q 9 -z 3 --depth -q -T tight -D %i -bg Transparent -o %s %s' % (dpi, eqname, dvifile)
        # discard warnings, as well.
        p = Popen(dvicmd, shell=True, stdout=PIPE, stderr=PIPE)
        rc = p.wait()
        if rc != 0:
            print p.stderr.readlines()
            raise Exception('dvipng error')
        depth = int(p.stdout.readlines()[-1].split('=')[-1])
    finally:
        # Clean up.
        for ext in exts:
            g = basefile + ext
            if os.path.exists(g):
                os.remove(g)

如果您想将部分代码转换为png文件,而不是所有文件,请查看。根据他们的想法,它可以将Latex源文件的一部分提取为单独的dvi文件,这些文件可以转换为png文件。另一种替代使用dvipng获取PNG的方法是直接将生成的PDF/ps文件转换为PNG:

gs -sDEVICE=png16m -dTextAlphaBits=4 -r300 -dGraphicsAlphaBits=4 -dSAFER -dBATCH -dNOPAUSE -sOutputFile=file.png file.pdf

非常类似。它有点类似,但与“精确复制”相差甚远。谢谢你的回答。提供的dvipng命令行选项特别有用。