Bash 如何从大量png图像创建动画gif图像?
我有一个图像文件“image.png”,我想用它创建一个.gif图像。 我编写了一个小脚本,以获得100张不同大小(1%-100%)的图像,然后从包含该图像的文件夹中删除原始图像(image.png),并使用此命令生成我想要的gif图像:Bash 如何从大量png图像创建动画gif图像?,bash,image-processing,imagemagick,gif,animated-gif,Bash,Image Processing,Imagemagick,Gif,Animated Gif,我有一个图像文件“image.png”,我想用它创建一个.gif图像。 我编写了一个小脚本,以获得100张不同大小(1%-100%)的图像,然后从包含该图像的文件夹中删除原始图像(image.png),并使用此命令生成我想要的gif图像: convert -delay 10 -loop 0 *.png image.gif 当我检查gif图像时,我可以看到最大的图像(100%大小)是静止图像(对我的眼睛),较小的图像开始显示在图像的左上角,从1%-100%,100%的图像与始终显示的原始图像一致
convert -delay 10 -loop 0 *.png image.gif
当我检查gif图像时,我可以看到最大的图像(100%大小)是静止图像(对我的眼睛),较小的图像开始显示在图像的左上角,从1%-100%,100%的图像与始终显示的原始图像一致。
我希望在我使用的图像软件(gthumb)中看到图像从矩形/正方形的中心逐渐增大,这不是我得到的吗
我检查了较小的图像,它们很好,我还以高速运行了图像的幻灯片,并向我展示了我希望在gif文件中显示的内容。我使用Linux
更新1:
下面是我用来生成100幅图像的脚本,在“Mark Setchell”回复之前:
#!/bin/bash
for i in {1..100};
do
if [ $i -lt 10 ]; then
convert -resize $i% lena.png 00$i.png
elif [ $i -lt 100 ]; then
convert -resize $i% lena.png 0$i.png
else
convert -resize $i% lena.png $i.png
fi
done
产生了100幅图像。
然后根据“Mark Setchell”的回复,我使用了以下代码:
for ((i=0;i<100;i++)) ; do
convert checked-box.png -resize $i% -background none -gravity center -extent 512x512 miff:-
done | convert miff:- -delay 80 anim.gif
for((i=0;i我猜您需要以下内容。我避免将所有100个中间文件写入磁盘,而是将它们以流式格式(MIFF或Magick Image File format)写入最终的转换,以收集所有文件并制作动画。另一个“技巧”是将每个图像置于透明背景的中心(-background none
),以便GIF的所有帧大小相同
for ((i=0;i<100;i++)) ; do
convert lena.png -resize $i% -background none -gravity center -extent 512x512 miff:-
done | convert miff:- -delay 80 anim.gif
用于((i=0;i尝试将生成100张图片的脚本更改为convert input.png…与以前一样…+重新分页-重心-背景无-范围宽度xheight frame-00N.png
其中宽度和高度是最终GIF图像的大小。convert check-box.png+重新分页-重心-背景无-范围256x256 frame-100.png
生成了一个png文件(frame-100.png)请编辑您的问题并展示如何生成100幅图像。我使用了我编写的以下脚本:#!/bin/bash for I in{1..100};do if[$I-lt 10];然后转换-resize$I%check-box.png 00$I.png elif[$I-lt 100];然后convert-resize$i%checked-box.png 0$i.png else convert-resize$i%checked-box.png$i.png fi done
我不明白为什么我的命令已经自动生成了100个图像,而你却用了lena
?请注意,答案中包含的动画不是命令生成的实际动画,因为它超过了StackOverflow的2MB限制,所以我制作了一个较小的动画,因为它的帧数较少,因此不太平滑。它的工作原理是图像从中心开始。但我仍然将原始图像作为背景,即t图像从小到大开始,而原始图像是背景。我用“lena.png”检查了我的图像,以确保我的图像没有问题,但仍然是一样的。我使用Linux Mint并尝试了Xviewer 1.8.1版和gthumb。请单击原始问题下的编辑
,添加您使用的确切图像和代码,然后重试如果可能的话,通过Dropbox或Google Drive等方式提供指向结果的链接。谢谢。我相信我可以解决后台问题。我使用了这个命令(与您的命令几乎相同,没有-background none
参数:for((I=0;I
for ((i=0;i<100;i++)) ; do
convert lena.png -resize $i% -background none -gravity center -extent 512x512 miff:-
done | convert miff:- -delay 80 anim.gif