Como retirar as bordas pretas de uma captura de tela em widescreen de forma automatizada para várias fotos? Esta foi a pergunta que me fiz outro dia quando estava analisando o Trailer de Duna (2020) de Denis Villeneuve para o Papo nas Estrelas. Quando estava editando o vídeo para o nosso Canal do Youtube, percebi que precisaria de uma forma rápida e automatizada para retirar estas bordas do widescreen, mas naquele momento eu não consegui encontrar, e acabei editando o vídeo com as bordas mesmo. Mas aquilo me incomodou e decidi que precisaria encontrar uma solução para situações futuras.
Afinal de contas o computador tem que fazer o trabalho por nós, evitando que tenhamos o trabalho manual de cortar imagem por imagem!
Basicamente eu tinha a primeira imagem e queria ter a segunda. Isso poderia ser feito rapidamente em qualquer editor de imagem se fosse uma ou duas imagens apenas. Porém, para este caso expecífico, eu precisaria editar mais de 20 imagens diferentes, o que demandaria um tempo que não tinha visto que pretendia lançar o vídeo o mais rápido possivel. Tinha que encontrar uma forma automatizada.
Qual a solução que eu encontrei? ImageMagick!
ImageMagick é um editor de imagens para Linux que você pode usar para automatizar suas edições diretamente no Shell.
Para isso precisaria utilizar o função “-shave“, que é o responsável por “cortar uma parte da imagem“. Certamente existem outras formas de utilizar o ImageMagick para alcançar o mesmo resultado, mas este foi a forma mais fácil que encontrei.
Como utilizar o ImageMagick?
A princípio o ImageMagick utiliza uma sintaxe bem padrão se sistemas UNIX:
command [options] input_image output_image
Mas você pode também utilizar a “forma mais moderna” de se fazer, que é colocar a imagem de entrada antes das opções:
command imput_image [options] output_image
O comando para utilizar o programa é “convert“.
Se você pretendo apenas converter uma imagem de um formato para outro, por exemplo, de .png para .jpeg, você deverá digitar algo assim:
Convert exemplo.png exemplo.jpeg
E com isso terá convertido a extensão de sua imagem. E é claro, você pode automatizar a conversão de um diretório todo, repleto de imagens de um determinado formato para outro utilizando-se do bom e velho “*”. Assim:
convert *.png *.jpeg
Pronto. Agora você economizou muito tempo em converter uma infinidade de imagens para o formato que você prefere.
A Função “-shave”
Pois bem, mas como então eu retiro as bordas pretas do widescreen de minhas imagens? Vamos lá, o comando -shave tem dois parâmetros a serem preenchidos, um horizontal (primeiro) e outro vertical(segundo). Algo assim:
convert exemplo.png -shave 0x0 saida.png
Apesar das barras pretas do widescreen estarem na horizontal, nós precisamos retirar verticalmente as barras, logo nós utilizaremos o segundo parâmetro. A questão é: Quanto devemos retirar?
Para isso, o que eu fiz foi editar a primeira imagem a mão, e determinar a diferença de tamanho entre elas. A imagem capturada do trailer tinha 1280x720px. Após editar minha imagem de referência, ela tinha 1280x536px. A segunda dimensão é a vertical, logo a conta que tive que fazer foi: 720px – 536px = 184px. Mas as barras estão acima e abaixo da imagem, logo metade do resultado foi retirado de cara parte da imagem inicial. Temos que determinar o quanto tem que ser retirado de cada lado: 184px /2 = 92px.
Este valor de 92px deverá ser colocado na segunda parte do parâmetro da função -shave, que é responsável pela vertical. E já que estamos fazendo tudo isso para automatizar o processo para múltiplas imagens, porque não aproveitar e converter o formato que utilizarei no site do Papo nas Estrelas? O resultado final ficou assim:
convert *.png -shave 0x92 dune-2020-trailer-analise.jpeg
E assim, segundos depois eu tinha mais de 20 imagens sem as bordas do widescreen, convertidas para o formato que utilizaria no site e ainda com nomes padronizados e numerados! Tudo isso com apenas uma linha de comando.
Vida longa ao Linux!