Em alguns momentos precisamos executar a mesma tarefa em uma quantidade alta de arquivos, como por exemplo ter que compactar todas as milhares de fotos de uma determinada pasta para reduzir seu tamanho, ou transformar em outro padrão de imagem, entre outros. Usar criar formas de automatizar esse processo ajuda a ganhar tempo e evitar falhas no processo, onde com um simples script, é possível automatizar determinada tarefa repetitiva.
A demonstração de um script desses com o PowerShell vai além do simples ajuste de imagens. O objetivo é demonstrar como uma automatização é simples e pode ser expandida para diversos cenários. Com o PowerShell, a flexibilidade e a personalização das tarefas tornam-se praticamente ilimitadas, permitindo que você crie soluções sob medida para suas necessidades diárias, economizando tempo e esforço em diversas situações.
O que precisamos
Para nosso exemplo, precisamos de algum programa que permita ser executado por linha de comando e possa alterar imagens. Em nosso caso foi escolhido o FFmpeg por sua flexibilidade em ser usado para diversos fins, tais como vídeos, áudios e fotos. Além de permitir a mudança de codec, compressão, bitrate e outros fatores.
Instalando o FFmpeg
Baixe o FFmpeg direto do site oficial e descompacte. Opcionalmente você pode renomar a pasta bin para ffmpeg, colocar na pastar Program Files do seu computador e adicionar na variável de computador Path (em configurações do sistema) para poder acessar seus executáveis a partir de qualquer lugar. Não iremos detalhar sobre a sintaxe do FFmpeg, caso queira configurações específicas leia sobre os possíveis argumentos e teste até encontrar o comando exato que deseja. Em seguida, adapte o comando PowerShell à sua necessidade.
O Script PowerShell
Em nosso exemplo iremos usar o FFmpeg, que está na pasta Program Files, para fazer uma cópia reduzida apenas das imagens png que estão em C:\Temp\Imagens (que estavam em resolução 4k) para C:\Imagens, alterando a resolução para Full HD (1920:”x”, mantendo a proporção da imagem original).
Para isso, abra o PowerShell (sugerimos o PowerShell ISE, para facilitar que você edite até deixar da forma que deseja), e crie o script abaixo, alterando as partes em cinza conforme sua necessidade:
$SourcePath = C:\Temp\Imagens
$DestinationPath = C:\Imagens
Get-Childitem $SourcePath | ForEach-Object {
$Name = $_.Name
cd "C:\Program Files\FFmpeg"
if ( (Get-ChildItem -File "$SourcePath$Name").Name.split(".")[-1].ToLower() -eq "png") {
.\ffmpeg.exe -i "$SourcePath$Name" -vf "scale=1920:-1" "$DestinationPath$Name"
}
}
Fontes/Referências
https://ffmpeg.org
https://mux.com/articles/convert-video-to-different-resolutions-with-ffmpeg
Mais Informações
Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.
Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.