2014-03-03 112 views
1

我使用ImageMagick来制作Turing Number,因为PHP GD的功能不足以完成我们想要的操作。我的问题是,我如何使用ImageMagick在我的代码中的不同点上对我的图像运行不同的命令?例如,是否可以写入内存,然后从内存加载而不写入文件?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

有趣的问题,如果它是一次性的事情,你可以尝试使用云服务,如使用imagemagick下的blitline。 – archie

回答

1

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

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 
+0

好的,谢谢!我会研究这个,看看这是否会与我们的项目一起工作! –