DEV Community

Cover image for Como fazer GIF animado com Python
Steadylearner
Steadylearner

Posted on • Updated on • Originally published at steadylearner.com

Como fazer GIF animado com Python

Estava aprendendo Python antes e não achei muitos artigos nesse assunto. Por isso, pensei que será bom escrever um para explicar como usar Python para fazer GIF animado simples.

Pode usar Git direito se você já tem git instalado com e depois disso, você só precisará mudar uns documentos e textos por seu próprio uso.

$git clone https://github.com/steadylearner/Como-fazer-GIF-animado-com-Python
Enter fullscreen mode Exit fullscreen mode

Para isso, é melhor você já tem ambiente para usar Python no seu computador. Nesse artigo, usei Python 3.7 com Virtualenv. Como aqui tá usando bastante pacotagens de Python e não precisa escrever seu código muito, pode usar a versão melhor para você e modificar umas partes para seu trabalho.

Caso nunca usou Python antes. Eu preparei umas listas para ajudar você.

  1. Python Brasil Introdução
  2. Como Criar Um Ambiente de desenvolvimento Python
  3. Python e Virtualenv
  4. Instalando programas com PIP

Você devia ler bastante antes de começar isso se não conhecia Python mas isso é normal. Daqui a diante, vou pensar que já conseguiu preparar ambiente para desenvolvimento.

O que eu digo daqui a diante, podem ser feitos com software como Photoshop ou uns para edição de vídeos. Mas usar código em vez de software ajuda você salvar poder de computação bastante, e caso você já tem códigos que funcionam. Pode economizar bastante tempo ao mesmo tempo.

Vamos começar com como preparar vídeo para fazer GIF animado primeiro. Talvez, você já tinha uns vídeos em mente que queira mudar em GIF animados. Tipo vídeo de gols sensacionais em jogos de futebol, animais engraçados ou cenas específicos de notícias.

Pode usar seu próprio vídeo caso você já tinha alguns vídeos para isso no seu celular. Se não, acho é melhor usar alguns vídeos de YouTube para praticar. Para isso, pode usar alguns software gráficos para baixar vídeos.

Caso você prefere, aind pode usar CLI como youtube-dl e também há vários jeitos e artigos sobre como baixar vídeo de YouTube ou sites de vídeos grátis.

Watch the video

Você ainda pode usar vídeo em cima para esse processo. Baixei num site de vídeo grátis e subi no YouTube para compartilhar facilmente.

Será mais fácil usar isso caso você queria usar o mesmo exemplo para esse artigo.

Caso você decidiu usar youtube-dl para baixar esse vídeo, pode usar códigos que deixei em baixo apenas mudando identidade de vídeo.

Se enetende inglês, leia isso primeiro antes de usar código em baixo.

Essa explicação é para vídeo em cima com id 7J-XaPwyafU

1. Só para baixar vídeo sem pensar tipo de vídeo
$youtube-dl https://www.youtube.com/watch?v=7J-XaPwyafU

2. Verificar qual tipo de video que voce quer e baxiar-o

1) $youtube-dl -F https://www.youtube.com/watch?v=7J-XaPwyafU
(mostra lista de vídeos)

2) $youtube-dl -f <número de vídeo entre lista que você quer baixar> https://www.youtube.com/watch?v=7J-XaPwyafU

3. Caso você só precisa áudio (Não precisa baxiar vídeo com audio para gif animado)

$youtube-dl -f 'bestaudiext=m4a]' 'http://youtu.be/<videoId>'
Enter fullscreen mode Exit fullscreen mode

Não precisamos vídeos de melhor qualidade com tamanho bem grande, quero que achou o melhor para seu uso.

Seu vídeo para esse projeto deve ser pronto nesse momento, a gente começa a aprender como mudar isso para Gif animado com exemplos de código em baixo.

Python código para fazer GIF animado em cima por Steadylearner (sr foi ser)

Comentários para explicar o que aconteça em código em cima

Separei documentos em código e o resto para ajudar você ler melhor. Podia achar comentários para cada linhas anotadas com números.

Caso você ainda precisa código que pode copiar e pastar, usa o em baixo.

# nome de documento pode ser seu_gif_animado.py
from moviepy.editor import *
import moviepy.video.fx.all as vfx

video = VideoFileClip("seu_video_para_gif.mp4").subclip(1, 3)
video = video.resize(0.4)

w, h = video.size # 2.

txt_steadylearner = TextClip("www.steadylearner.com", fontsize=16, color='white') # 3.

txt_steadylearner = txt_steadylearner.set_position((12, h - 20)).set_duration(video.duration - 0.1)

sua_marca =(ImageClip("sua_marca.png")
.set_duration(video.duration)
.resize(height=50).margin(right=2, bottom=1, opacity=0)
.set_position(("right","bottom")))

video = CompositeVideoClip([video, sua_marca, txt_steadylearner.crossfadein(1)])

short_video = video.speedx(final_duration=2)
reverse_video = short_video.fx(vfx.time_mirror)

final = concatenate_videoclips([short_video, reverse_video])final.to_gif("seu_gif_animado.gif", fps=10)
Enter fullscreen mode Exit fullscreen mode

Para esse processo funcionar, Você devia installar pacotagem de Python como Moviepy com $pip install moviepy e outros para isso funcionar direito.

Depois escreve ou copia códigos em cima no documento com nome como seu_gif_animado.py e digita $python seu_gif_animado.py com imagens e textos de exemplo.

O resultado será igual como imagem em título.

Já deixei imagem de comentários para ajudar você entender melhor o que aconteça mas queria dar umas dicas mais para você.

  1. Você tem que assistir seu vídeo bem primeiro e tem que decidir quais partes de vídeo você queria incluir e depois você corta só essas partes com .subclip(começo, fim)

  2. Depende do seu texto, imagem de marca e vídeo que você usa, tem que modificar números no exemplo e achar o melhor com experimento

  3. Ler bastante documento no site oficial. Podia perguntar outros mas quem sabe melhor sobre o assunto sempre será áuthor de projeto.

Desejo que esse artigo ajudou você fazer o que queria. Acredito que pode fazer seu próprio GIF animado com sua imagem(marca, fotos etc) e suas mensagens(textos, títulos etc) depois de seguir bem esse artigo.

Se você precisa de ajuda ou precisa de desenvolver em sua empresa, pode falar comigo em Telegram chat.

Estou trabalhando com ETH/BSC e Solana blockchain. Isso é minha conta de GitHub e pode ser usado como referência.

Oldest comments (0)