使用Imagemagick而不制作文件?

时间:2010-11-01 01:46:33

标签: python imagemagick

我正在使用Python从文本创建图像。我已经和PIL一起来回了,坦率地说,它的字体和对齐选项需要做很多工作。

我可以对Imagemagick进行子处理,但它看起来总是需要将文件写入磁盘。我想对图像创建进行子处理,只是将数据返回给Python,将所有内容保存在内存中。

我已经研究过ImageMagick的一些假设的Python包装器,但它们都已经过时了,或者没有任何记录。即使在SO上广泛搜索也没有明确指出在Python中使用ImageMagic的实际方法。所以我认为进行子处理是最好的前进方式。

2 个答案:

答案 0 :(得分:7)

如果指定convert作为输出文件,

format:-和其他ImageMagick命令可以将图像数据输出到stdout。您可以使用子进程模块在Python中捕获该输出。

例如:

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

答案 1 :(得分:0)

将数据传输到ImageMagick会有很多工作,但有几种基于Pango的解决方案。我使用了pango和pygtk一段时间了,我很确定你可以开发一个无头的gtk或gdk应用程序来将文本呈现给pixbuf。

更简单的解决方案可能是使用python cairo bondings。

Pango的工作水平非常低,所以简单的东西可能会复杂得多,但渲染质量很难被击败,它会给你很多细致的布局控制。