Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从大量png图像创建动画gif图像?_Bash_Image Processing_Imagemagick_Gif_Animated Gif - Fatal编程技术网

Bash 如何从大量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%的图像与始终显示的原始图像一致

我有一个图像文件“image.png”,我想用它创建一个.gif图像。 我编写了一个小脚本,以获得100张不同大小(1%-100%)的图像,然后从包含该图像的文件夹中删除原始图像(image.png),并使用此命令生成我想要的gif图像:

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个中间文件写入磁盘,而是将它们以流式格式(MIFFMagick 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