Muchas de las preguntas sobre cómo crear un gif animado a partir de un conjunto de imágenes png sugieren utilizar una variante del convert
comando ImageMagick :
convert -delay 2 -loop 0 *.png animated.gif
Sin embargo, tengo algunos miles de imágenes y, por lo tanto, convert
uso toda mi memoria, intercambio y luego se bloquea. ¿Qué software alternativo existe, que es más consciente de la memoria? Podría usar otro formato abierto si .gif
no es compatible, y prefiero una herramienta CLI.
command-line
software-recommendation
images
conversion
dotancohen
fuente
fuente
convert -delay 2 -loop 0 0*.png animated.gif
convertirán solo los archivos que comienzan con un '0'. Y así.Respuestas:
Parece que estás intentando hacer un video. Si ese es el caso, entonces usaría un formato de video adecuado.
En este caso, usaría ffmpeg para convertir los archivos PNG individuales a un video H.264. Dado que ffmpeg está hecho para trabajar con videos que pueden durar horas, no debería tener ningún problema con sus miles de imágenes. El uso de H.264 en lugar de gif animados dará como resultado una gran mejora en la calidad de la imagen.
Algo como esto debería funcionar para usted:
-framerate 1/2
: Esto establece la velocidad de fotogramas a la mitad de FPS, o 2 segundos por fotograma.-i img%04d.png
: Sinimg0000.png
embargo, esto le dice a ffmpeg que lea los archivosimg9999.png
.-c:v libx264
: Utilice el códec de video libx264.-crf <number>
: Configuración de calidad. 0 a 51. 23 es el valor predeterminado. 0 es una verdadera codificación sin pérdidas, que tendrá un ancho de banda bastante alto. 18 es casi sin pérdidas visuales.-r 30
: Establezca la velocidad de fotogramas de salida a 30 FPS. Cada una de las imágenes de entrada se duplicará para hacer que la salida sea lo que especifique aquí. Puede dejar este parámetro desactivado y el archivo de salida estará en la velocidad de fotogramas de entrada, pero la película resultante no se mostró correctamente cuando lo probé en este momento.out.mp4
: Nombre del archivo de salida.Referencias
fuente
Personalmente, lo lanzaría en un número limitado de archivos en lugar de todos a la vez. Por ejemplo, algo como esto:
fuente
Use
-limit memory 1GiB
para limitar la cantidad deconvert
usos de memoria .Miles de imágenes crearían un gran GIF que la mayoría de las computadoras tendrán dificultades para mostrar. Mantengo mis GIF animados por debajo de 200 imágenes cuando es posible. Cuanto menos mejor. Si numera sus imágenes, este comando eliminará las imágenes impares
rm *[13579].png
.Así que aquí está mi flujo de trabajo típico para crear un GIF animado de una escena de película:
fuente
Quizás APNG te sea útil. Es compatible con algunos navegadores , incluido Firefox, pero actualmente excluye Chrome e IE. Como es solo una extensión PNG, es muy simple convertir PNG a APNG. La herramienta de apngasm puede hacer eso. Pero el formato es tan simple que recientemente escribí un ensamblador APNG para Sage. Adaptar ese código sería una alternativa.
fuente
Si tiene miles de png-s, el formato anigif es extraño. Lo haría de esta manera, usando
avconv
:fuente
gifsicle es una utilidad de línea de comandos para manejar animaciones GIF. Si está dispuesto a cambiar la memoria por velocidad, puede usar su conmutador --conserve-memory.
fuente
Además de otras respuestas: dado que desea producir un archivo GIF, supongo que desea mostrar la imagen en una página web. Si es así, no me molestaría en convertir sus PNG en absoluto. Simplemente busque en google "presentación de diapositivas de javascript" y use uno de los millones de scripts gratuitos. O escriba el suyo, esto es realmente trivial.
Los beneficios de hacerlo de esta manera son:
solo se carga una imagen en el navegador en cualquier momento, la presentación de diapositivas se inicia rápidamente y no consume mucha RAM en la máquina del usuario.
La solución se escala a millones de imágenes. O miles de millones, si eres lo suficientemente paciente como para verlos a todos :)
Puede agregar controles a su página para pausar, rebobinar, cambiar el retraso o ir a un cuadro en particular.
fuente