1

画像のディレクトリからアニメーション gif を正常に生成しました。ループしないようにする方法がわかりませんが、ただ進み続けています。ImageMagick で設定を見つけたと思いますが、Imagick PHP ライブラリで設定する対応する方法が見つかりません。誰がそれが何であるか知っていますか?

4

1 に答える 1

4

IMagick のドキュメントを読み逃したため、見つけるのに時間がかかりました。ただし、IMagick を使用してアニメーション gif のループを設定できます。

適切な ImageMagick コードで Netscape ループ拡張を書き出すコードを見ていると、コマンド ライン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 に答える