2014-03-03 167 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

好的,謝謝!我會研究這個,看看這是否會與我們的項目一起工作! –