如何在不生成文件的情况下使用Imagemagick?

4 投票
2 回答
1396 浏览
提问于 2025-04-16 06:22

我正在用Python把文字变成图片。我试过使用PIL这个库,但老实说,它的字体和对齐选项还需要很多改进。

我可以使用Imagemagick这个工具,它工作得很好,不过它似乎总是需要把文件写到硬盘上。我希望能直接在内存中创建图片,然后把数据返回给Python,而不需要写文件。

我查过一些声称是ImageMagick的Python封装库,但它们都过时得可怜,或者根本没有文档。即使在StackOverflow上搜索,也没有找到明确的方法来用Python使用ImageMagick。所以我觉得使用子进程是最好的解决办法。

2 个回答

0

把数据传给ImageMagick会简单很多,但其实还有几种基于Pango的解决方案。我之前用过pango和pygtk,感觉你可以开发一个没有界面的gtk或gdk应用程序,把文字渲染成图片。

一个更简单的办法可能是使用python的cairo绑定。

Pango的工作原理比较底层,所以一些简单的事情可能会变得复杂,但它的渲染质量非常好,而且你可以对布局进行很细致的控制。

7

convert 和其他 ImageMagick 命令可以将图像数据输出到标准输出(stdout),只要你把输出文件指定为 format:-。你可以使用 Python 的 subprocess 模块来捕获这些输出。

举个例子:

cmd = ["convert", "test.bmp", "jpg:-"]
output_stream = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout

撰写回答