我正在使用ImageMagick
来创建图灵数
,因为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 的输出缓冲区以显示在页面上。这可能吗?
最佳答案
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
另一种替代方法是将 volatile 内存的一部分挂载为目录 tmpfs ,然后在其中写入您的临时图像。
#/etc/fstab
tmpfs /var/imagemagick-tmp tmpfs nodev,nosuid,size=50M 0 0
关于php - ImageMagick 读/写内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160137/