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()
无济于事,但也许我错用了它? - 当我的$框架单独回显时,它们都绘制完成。