我已经从图像目录成功生成了一个动画 gif。不过,我不知道如何让它不循环,它只是一直在继续。我想我在 ImageMagick 中找到了设置,但在 Imagick PHP 库中没有看到相应的设置方法。有谁知道它是什么?
问问题
1818 次
1 回答
4
我花了一段时间才找到它,因为错过了 IMagick 文档。但是您可以使用 IMagick 设置动画 gif 的循环。
当我查看在正确的 ImageMagick 代码中写出 Netscape Loop 扩展的代码时,它使用了一个内部变量来调用iterations
尽管-loop
在命令行上使用的图像。它始终在内部使用迭代,然后一直到 IMagick 代码中。
来自 ImageMagick 代码:coders/gif.c
1689 if ((GetPreviousImageInList(image) == (Image *) NULL) &&
1690 (GetNextImageInList(image) != (Image *) NULL) &&
1691 (image->iterations != 1))
1692 {
1693 /*
1694 Write Netscape Loop extension.
1695 */
1696 (void) LogMagickEvent(CoderEvent,GetMagickModule(),
1697 " Writing GIF Extension %s","NETSCAPE2.0");
1698 (void) WriteBlobByte(image,(unsigned char) 0x21);
1699 (void) WriteBlobByte(image,(unsigned char) 0xff);
1700 (void) WriteBlobByte(image,(unsigned char) 0x0b);
1701 (void) WriteBlob(image,11,(unsigned char *) "NETSCAPE2.0");
1702 (void) WriteBlobByte(image,(unsigned char) 0x03);
1703 (void) WriteBlobByte(image,(unsigned char) 0x01);
1704 (void) WriteBlobLSBShort(image,(unsigned short) image->iterations);
1705 (void) WriteBlobByte(image,(unsigned char) 0x00);
1706 }
请参阅文档:IMagick::setImageIterations( int $iterations )
设置$iterations = 0
使其无限循环。
帧之间的延迟是使用我相信的刻度格式设置的,使用:
于 2012-10-18T19:28:28.517 回答