2017-02-27 1 views
1

Je sais que je peux utiliser ImageMagick pour exploser un gif animé dans ses cadres constitutifsComment extraire Nième trame de GIF avec des transparents cumulatifs pris en compte

convert my.gif my.png 

Le problème est que tous les cadres, à l'exception de la première contiennent beaucoup de la transparence, je suppose à cause d'une sorte de compression diff.

Je veux la Nième image en tant que fichier séparé, comme il apparaîtrait dans le rendu final après que tous les calques transparents après la première image ont été appliqués. C'est un très gros fichier (gigaoctet) avec des images 1080p, donc je ne veux pas les extraire tous, seulement le Nième.

Comment est-ce que je peux faire ceci? J'ai besoin d'une solution non interactive.

Répondre

0

pas 100% sûr que vous attendez que cela fonctionne comme il pourrait y avoir plus d'un cadre GIF correspondant à chaque image 1080p, de sorte que votre calcul de N sera probablement différent de notion d » ImageMagick de N. Par exemple, dans le cadre de l'optimisation, ImageMagick peut choisir de faire 2 effacements partiels d'une trame et 2 autres remplacements pour rendre une seule trame 1080p qui fera que vos valeurs diffèrent de plusieurs images chaque fois que cela se produit.

Quoi qu'il en soit, vous pouvez essayer d'expérimenter avec l'option -coalesce qui oblige ImageMagick de recréer toutes les pièces nécessaires pour rendre une image complète, puis de supprimer les cadres environnants.

option la moins intensive des ressources est probablement pour essayer de charger une seule image:

convert a.gif[784] -coalesce frame784.png 

La prochaine moins intensive est probablement charger toutes les images avant celui que vous voulez et ne pas la peine chargement plus tardives:

convert a.gif[0-784] -coalesce -delete 0-783 frame-784.png 

l'option la plus gourmande en ressources, mais le plus susceptible de travailler, est probablement charger tous les cadres et les supprimer: non nécessaires

convert my.gif -coalesce -delete 0-783,785--1 frame784.png 

Je ne connais pas vos données - essayez-les et voyez.

+0

Merci. Pouvez-vous expliquer ce que vous entendez par "il pourrait y avoir plus d'une trame GIF correspondant à chaque trame 1080p"? – spraff

+0

Dans le cadre de l'optimisation GIF, ImageMagick décide de la manière optimale de passer de votre image 1080p N à votre image 1080p N + 1. Il peut simplement stocker les différences dans un seul cadre GIF, ou il peut effacer le coin supérieur gauche comme une opération "GIF", puis redessiner une partie de ce coin supérieur gauche comme une autre opération "GIF", puis dessiner quelque chose dans le haut -droite comme une autre opération "GIF" et ensuite dessiner quelque chose au milieu comme une autre opération "GIF". Il y a maintenant 4 "frames" * GIF * pour une seule trame 1080p, donc les numéros d'images peuvent ne pas correspondre. –