在Windows上与ImageMagick并排添加两个GIF

时间:2018-03-26 09:55:12

标签: windows imagemagick

在Linux(Ubuntu)上,我能够使用此命令追加两个GIF动画(相同大小,相同数量的帧):

convert file1.gif'[0]' -coalesce \\( file2.gif'[0]' -coalesce \\) \\
          +append -channel A -evaluate set 0 +channel \\
          file1.gif -coalesce -delete 0 \\
          null: \\( file2.gif -coalesce \\) \\
          -gravity East -layers Composite output.gif

您也可以在此处找到此命令:Animation Modifications

在Windows上,此命令不起作用。它会产生错误:

convert torusEnlargingSpheres3.gif'[0]' -coalesce \\( torusEnlargingSpheres6.gif'[0]' -coalesce \\) +append -channel A -evaluate set 0 +channel torusEnlargingSpheres3.gif -coalesce -delete 0 null:: \\( torusEnlargingSpheres6.gif -coalesce \\) -gravity East -layers Composite output.gif

convert.exe: UnableToOpenBlob `torusEnlargingSpheres3.gif'[0]'': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `GIF'[0]'' @ error/constitute.c/ReadImage/504.
convert.exe: UnableToOpenBlob `\\(': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/504.
convert.exe: UnableToOpenBlob `torusEnlargingSpheres6.gif'[0']': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `GIF'[0']' @ error/constitute.c/ReadImage/504.
convert.exe: UnableToOpenBlob `\\)': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/504.
convert.exe: UnableToOpenBlob `\\(': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/504.
convert.exe: UnableToOpenBlob `\\)': No such file or directory @ error/blob.c/OpenBlob/2701.
convert.exe: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/504.

为了在Windows上使用此命令,我应该更改什么?

此命令不会生成错误,但不会附加图像:

convert file1.gif"[0]" -coalesce ^( file2.gif"[0]" -coalesce ^) +append -channel A -evaluate set 0 +channel file1.gif -coalesce -delete 0 null:: ^( file2.gif -coalesce ^) -gravity East -layers Composite output.gif

3 个答案:

答案 0 :(得分:3)

Windows上的引用与Unix不同。以下是有关如何从Linux引用转换为Window引用的一些想法。请注意,大多数在线ImageMagick示例都是使用Linux样式引用,因此这对任何Windows用户都特别相关。

<强> 1。线路延续

在Linux上,反斜杠用作行继续符,但Windows使用插入符号(^),所以这个(Linux):

convert image.png image.png \
   +append result.png

变为此(Windows):

convert image.png image.png ^
    +append result.png

<强> 2。用双引号替换单引号

在Linux上,参数可以用单引号引用,但在Windows上,需要双引号,所以这个(Linux):

convert 'image with spaces.png' info:

变为此(Windows):

convert "image with spaces.png" info:

第3。转到Windows时需要转义某些字符

在Linux上,某些字符需要通过在它们之前使用反斜杠来转义,例如()!,但这在Windows上是不必要的,所以这个(Linux):

convert image.png \( image.png -negate \) +append result.png

变为此(Windows):

convert image.png ( image.png -negate ) +append result.png

<强> 4。加倍百分号

从Linux升级到Windows时加倍百分号,所以这个(Linux):

convert xc:"gray(128)" -depth 8 -threshold 51% txt:

变为此(Windows):

convert xc:"gray(128)" -depth 8 -threshold 51%% txt:

<强> 5。转到Windows时需要转义一些字符

某些角色需要在它们之前添加插入符号才能在迁移到Windows时转义它们,例如|&><,所以这(Linux) :

convert image.png -resize 1024x768\> result.png

变为此(Windows):

convert image.png -resize 1024x768^> result.png

<强> 6。留意评论

哈希符号(#)在Linux中引入了注释,这些注释可能最好删除并放在其他地方,所以这个(Linux):

convert input.png -auto-level result.png    # comment

可能成为其中任何一个(Windows):

convert input.png -auto-level result.png
convert input.png -auto-level result.png    :: comment  

如果您发现任何其他情况,或者我的任何情况不正确,或者可以更好地解释,请通过评论告诉我,我会尽量保持名单正确,作为其他人的参考。< / p>

答案 1 :(得分:2)

我可能用这样的东西模拟“+追加”......

读入file1 GIF,合并并设置其页面几何图形以将其扩展到右侧宽度的两倍。再次合并以创建额外的画布区域。

然后包含“null:”以将file1帧与file2帧分开。

然后读入file2 GIF并合并它。

通过将重力设置为东并使用“-layers composite”将每个file2帧合并到其伙伴file1帧的扩展区域来完成。设置延迟和“-loop 0”,并命名输出文件。

执行此操作的命令看起来像这样......

convert ( file1.gif -coalesce -set page %[fx:w*2]x%[h]+0+0 -coalesce ) ^
   null: ( file2.gif -coalesce ) -gravity east -layers composite ^
   -set delay 20 -loop 0 result.gif

要在BAT脚本中使用这样的命令,请将单个百分号“%”标记为双精度“%%”。

答案 2 :(得分:0)

我仍然不知道如何修复命令。让我为Windows提供Linux solution given here

这是:

1)文件self.get_object()NoReverseMatch at /offer/entrepreneurship/modelo-de-negocio/delete/ Reverse for 'list' with arguments '()' and keyword arguments '{'created_by': 'bgarcial'}' not found. 1 pattern(s) tried: ['offer/entrepreneurship/by/u/(?P<username>[-\\w]+)/$'] 的单独框架:

file1.gif

2)文件a-0001.gif, ...convert file1.gif -coalesce a-%04d.gif 的单独框架:

file2.gif

3)并排追加框架(使用aa-0001.gif, ...获取相对路径 - 重要):

convert file2.gif -coalesce aa-%04d.gif 

4)加入附加的框架:

%~nxf

enter image description here