我正在使用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的输出缓冲区以显示在页面上。这有可能吗?
答案 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
另一种方法是将一部分易失性存储器作为tmpfs目录挂载,然后在那里写下临时图像。
#/etc/fstab
tmpfs /var/imagemagick-tmp tmpfs nodev,nosuid,size=50M 0 0