ImageMagick读/写内存

时间:2014-03-03 23:57:29

标签: php imagemagick

我正在使用ImageMagick制作Turing Number,因为PHP GD的功能不足以完成我们想要的事情。我的问题是,如何在我的代码中的不同点使用ImageMagick在我的图像上运行不同的命令?例如,是否可以写入内存,然后从内存加载而无需写入文件?

所以,例如,如果我运行它来构建我的背景:

exec("/usr/local/bin/convert '$this->background' -resize $this->width :save_to_mem:");

如果我不需要,我不想保存文件。接下来我想在循环中引用该文件,可能是这样的:

$text = $this->turing;
exec("/usr/local/bin/convert :load_from_mem: -size {$this->width}x{$this->height} -xc:white :save_to_mem:");
for($i = 0; $i < strlen($text); $i++){
    $number = randNum();
    exec("/usr/local/bin/convert :load_from_mem: -font Candice -pointsize 72 label:$number :save_to_mem:");
}

之后我想将文件写入php的输出缓冲区以显示在页面上。这有可能吗?

1 个答案:

答案 0 :(得分:1)

Imagemagick确实支持memory program register(mpr :)写作&amp;在内存中读取图像。但是,在进程结束时,内存中分配的任何内容都将被释放,因此需要对设计解决方案进行一些预见。

convert rose: -write mpr:apples +delete \
    \( mpr:apples -rotate 90 \) \
    \( mpr:apples -rotate 120 \) \
    mpr:apples +append aa_rose.png

mpr: example

另一种方法是将一部分易失性存储器作为tmpfs目录挂载,然后在那里写下临时图像。

#/etc/fstab
tmpfs /var/imagemagick-tmp tmpfs nodev,nosuid,size=50M 0 0