Je veux faire une .gif
image animée à partir d'un ensemble donné d' .jpg
images.
Je préférerais le faire depuis la ligne de commande, les outils en ligne de commande seraient donc les bienvenus.
command-line
image-processing
gif
Maythux
la source
la source
Réponses:
Vous pouvez utiliser le package ImageMagick . Installez-le en utilisant la commande:
Vous pouvez maintenant créer un
gif
nombre à partir d'images (jpg
) en utilisant:la source
-resize 50%
.-deconstruct
. J'ai également constaté qu'ImageMagick était très gourmand en mémoire, voir repères: askubuntu.com/a/1102183/52975convert -delay 0 -loop 0 *.tif myanimated.gif
a bien fonctionné, sur 720 fichiers tifPour compléter la réponse de Maythux:
Pour éviter de générer un très gros fichier, vous pouvez utiliser l'
-resize
option:Dans mon cas, j'ai 4608x3456 images et le gif généré faisait plus de 300M pour 32 images
ou
Prenez soin de * .jpg
*.jpg
ça craint un peu quand on a affaire à des valeurs numériques, vous pouvez générer un gif avec des images non triées.Comme les prises de vue ont été prises très rapidement (10 / s), elles ont toutes le même temps de modification et vous ne pouvez pas tromper en utilisant
ls -t
par exemple. Sur Ubuntu, vous pouvez utiliser à lals -v
place quelque chose comme:Le tri numérique est assez délicat sous Mac OS X, cependant, vous devrez créer un script personnalisé.
la source
find
,sort
, expansion des accolades, et ainsi de suite. L'ls
outil est notoirement inapproprié pour ce genre de chose. Utilisezfind
. Il y a un peu de courbe d'apprentissage, mais ça en vaut la peine.Je n'ai pas assez de réputation pour commenter, mais au lieu de modifier les noms de fichiers, vous pouvez utiliser Globbing pour que votre shell développe les noms de fichiers.
la source
GIMP
Vous pouvez facilement le faire avec GIMP. Installez-le d'abord s'il n'est pas déjà installé avec
Créer le gif
Depuis GIMP, allez dans Fichier -> Ouvrir en tant que calques pour ouvrir tous les png sur leur propre calque.
À partir de là, vous pouvez modifier les couches et, une fois cela fait, aller dans Fichier -> Exporter en tant que . Dans la boîte de dialogue, assurez-vous de définir le type de fichier sur GIF.
De là, vous passerez aux options d'exportation GIF. Cochez l' option " En tant qu'animation " et définissez les paramètres comme requis.
la source
solution ffmeg + données de test
Depuis Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8, j'ai découvert que ffmpeg est beaucoup plus rapide et utilise beaucoup moins de mémoire .
La commande de conversion la plus simple est:
Vous pouvez obtenir mes données de test avec:
Les données de test ont été générées avec: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 et contiennent 256 images PNG 1024x1024.
Et voici une autre donnée de test que vous pouvez générer directement dans votre navigateur dès maintenant! https://stackoverflow.com/questions/19235286/convert-html5-canvas-sequence-to-a-video-file/57153718#57153718
Les
ffmpeg
options importantes que je veux mettre en évidence sont les suivantes:-pattern_type glob
: moyen pratique de sélectionner des images-framerate 60
: supposons 60 images par seconde sur les images d'entrée et produisent le même nombre d'images par seconde.ffmpeg
ne peut pas savoir autrement, car il n'y a pas de données FPS dans les images comme dans les formats vidéo.Les 256 images en entrée prennent environ 4 secondes.
-r 15
: optionnel. Choisissez-en une toutes les 4 images afin de réduire la taille (4 == 60 / 15
).Avec cela,
identify out.gif
dit que le GIF ne contient que 64 images.Il faut encore 4 secondes pour jouer, le délai est donc modifié pour faire correspondre les choses.
-vf scale=512:-1
: optionnel. Définissez la largeur et la hauteur de l'échelle proportionnellement, généralement pour réduire la taille et économiser de l'espace.Pour que ImageMagick fonctionne, j'ai d'abord dû modifier ses limites en matière de disque et de mémoire,
/etc/ImageMagick-6/policy.xml
comme expliqué à l' adresse suivante : https://superuser.com/questions/1178666/imagemagick-convert-quits-after-some-pagesVoir également:
ImageMagick vs repère ffmpeg
J'ai comparé les commandes:
Les commandes ont été construites pour produire des sorties aussi proches que possible afin de valider la comparaison:
/usr/bin/time -v
: utilisé pour trouver l'utilisation maximale de la mémoire, comme expliqué à l' adresse suivante : https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process-deconstruct
: Les images GIF peuvent contenir uniquement le rectangle minimal modifié de l'image précédente pour réduire la taille du fichier GIF.ffmpeg
calcule ces diffs par défaut, mais ImageMagick ne le fait pas, sauf si-deconstruct
est utilisé.En gros, vous voudrez utiliser cette option à chaque fois avec ImageMagick.
Nous pouvons observer la différence avec:
Avec la version compressée, toutes les images ont des tailles plus petites que la taille initiale, par exemple:
Dans cet exemple, la seconde image
516x516
remplace uniquement le format 1024x1024 complet et est placée à un décalage de252+257
. Il ne contient donc que le triangle du milieu.Voir aussi: comment redimensionner un fichier GIF animé à l'aide d'ImageMagick?
-delay
: valeur qui correspond aux 60 images par seconde deffmpeg
. Cela ne devrait pas avoir d’importance pour les performances de conversion, mais je ne veux pas le risquer.Les fichiers GIF en sortie ont à peu près la même taille et sont visuellement identiques.
Nous obtenons pour ImageMagick:
et pour ffmpeg:
à partir de laquelle on voit que:
Matériel de test: Ordinateur portable Lenovo ThinkPad P51 , Intel Core i7-7820HQ, 32 Go (16 + 16) SODIMM DDR4 2400 MHz, 512 Go SSD PCIe TLC OPAL2.
la source
-r
ni de-v
commandes, mais la sortie est toujours de qualité inférieure. Comment conserver la même qualité de gif que les fichiers png?-framerate 60 -r 60
. Inspectez les images GIF générées et les images d'entrée à l'aide des outils ImageMagick, commeidentify
pour essayer de comprendre ce qui se passe.Vous pouvez utiliser un programme appelé convert inclus dans le paquet imagemagick. Il est géré par la ligne de commande, mais très facile à utiliser. Installez-le via le centre de logiciel ou accédez à une invite de commande et tapez
Maintenant, créez le .gif.
* Notez que l'exemple ci-dessus provient directement des exemples d' Image Magick
la source
convert -delay 20 -loop 0 *.png out.gif
crée un GIF en boucle.