1
我希望每一幀都能重新繪製,而不需要在它之後繪製它。我當前的代碼是:(PHP)Imagick創建的gif動畫:設置框架處置?
// $frames is an array of image blobs
$durations = array(50, 50, 50, 50)
$loops = 0;
$big = new Imagick();
$big->setFormat('gif');
for ($i = 0; $i < count($frames); $i++) {
$frames[$i]->scaleImage(140, 140);
$frames[$i]->setImagePage(140, 140, 0, 0);
$frames[$i]->setImageDispose(1);
$big->addImage($frames[$i]);
$big->setImageDelay($durations[$i]);
}
$big = $big->deconstructImages();
$big->setImageIterations($loops);
$big->writeImages('test.gif');
的setImageDispose()
設置沒有達到我想要的:
setImageDispose(1)
:example imagesetImageDispose(2-3)
:example image
雖然(1)似乎工作如預期的那樣,它仍在繪製下面的前一幀。我怎樣才能簡單地將它設置爲Gimp的「替換」等價物,其中每個框架都是獨立繪製的?我還沒有發現可以解決這個問題的另一個功能嗎?
謝謝。
其他備註:
- 我已經使用
setImageDispose()
兩個框對象上和 最終GIF對象嘗試和兩者都具有相同的結果(見上文) - 我試圖
setImagePage()
無濟於事,但也許我錯用了它? - 當我的$框架單獨回顯時,它們都繪製完成。