bash - 如何从多个 png 图像创建动画 gif 图像?
问题描述
我有一个图像文件“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
更新 2:
我编辑了以下命令来更改输入文件名。
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
解决方案
我猜你想要类似下面的东西。我避免将所有 100 个中间文件写入磁盘,而是以流格式(MIFF或Magick 图像文件格式)将它们写入最终convert
将它们收集起来并为其设置动画。另一个“技巧”是将每个图像置于透明背景上 ( -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
请注意,该-extent
参数决定了最终图像的尺寸。如果您使范围小于原始图像,您将获得超过 1:1 全尺寸的缩放。我猜您可能希望范围设置与您的输入图像完全匹配,那么动画的最后一帧将是您完整的、未裁剪的原始图像。但是你现在有了代码,所以实验吧!
请注意,您可以向后运行动画并创建缩小效果,而不是通过将循环从 100 向下运行到 1 或通过添加-reverse
before-delay
来反转帧的顺序来进行缩放。
关键字:ImageMagick、图像、图像处理、缩放、缩小、GIF、动画 GIF、命令行
推荐阅读
- javascript - react-lightbox-gallery 和 simple-react-lightbox 无法正常工作
- java - Android Studio build 不断崩溃(stableIds.txt 数据无效。(13))
- django - Django id 字段即将到来 None
- python - 使用python从json中提取数据
- reactjs - TypeError: selection.interrupt 不是函数
- javascript - 在 JS 中解析给我一个 SyntaxError: JSON.parse: unexpected character
- python - 在边界框中获得不同尺寸框的最佳拟合匹配
- scikit-learn - sk.learn average_precision_score
- javascript - 更新打字稿变量但不更新基础引用变量
- amazon-web-services - AWS Amplify 中的全栈应用程序