Conversor de Imagens com PowerShell

Introdução

Casos de Uso

Execução do Script

PowerShell
foreach ($folder in @($pastaMain, $pastaOriginal, $pastaConvertida)) {
    if (-not (Test-Path $folder)) {
        New-Item -ItemType Directory -Path $folder | Out-Null
    }
}
PowerShell
$extensao="*.png","*.jpg","*.jpeg","*.jfif","*.webp","*.bmp","*.tiff","*.avif", ".ico"
PowerShell
Write-Host "`nConvertendo imagens para *.$formatoEscolhido* ...`n"
PowerShell
if ($deletar){

        Remove-Item -Path $img.FullName -Force

}
PowerShell
else {

    Move-Item -Path $img.FullName -Destination $pastaOriginal -Force

    }.

Conclusão

Script completo

PowerShell
Código:

# Comando para instalar a biblioteca necessaria
 winget install ImageMagick.Q16-HDRI


# Caminho da area de trabalho do usuario
$desktop = [Environment]::GetFolderPath("Desktop")

# Caminho da pasta principal
$pastaMain = Join-Path $desktop "Conversão"

# Caminhos das pastas
$pastaOriginal = Join-Path $pastaMain "originais"
$pastaConvertida = Join-Path $pastaMain "convertidas"

# Cria as pastas se nao existirem
foreach ($folder in @($pastaMain, $pastaOriginal, $pastaConvertida)) {
    if (-not (Test-Path $folder)) {
        New-Item -ItemType Directory -Path $folder | Out-Null
    }
}


# Mensagem de confimação da Criação de pastas
Write-Host "Pastas criadas em: $pastaMain"
Write-Host ""


# Tipos de extensao dos arquivos que serão lidos
$extensao = "*.png","*.jpg","*.jpeg","*.jfif","*.webp","*.bmp","*.tiff","*.avif", ".ico"

# Lista todas as imagens
$images = Get-ChildItem -Path $pastaMain -Include $extensao -File -Recurse

# If que lê se existem ou não imagens na pasta
if ($images.Count -eq 0) {
    Write-Host "Nenhuma imagem encontrada dentro da pasta Conversão."
    Start-Sleep -Seconds 5
    exit
}

# Pergunta a extensao desejada para a conversao
while ($true) {
    Write-Host "Selecione o formato:"
    Write-Host "1 - JPG"
    Write-Host "2 - PNG"
    Write-Host "0 - Sair"
    $escolhaForm = Read-Host "Opção"

    switch ($escolhaForm) {
        "1" {
            $formatoEscolhido = "jpg"
            $flag = $true
        }
        "2" {
            $formatoEscolhido = "png"
            $flag = $true
        }
        "0" {
            Write-Host "Encerrando script!"
            Start-Sleep -Seconds 2
            exit
        }
        default {
            Write-Host "Opção inválida. Tente novamente.`n"
            continue
        }
    }

    if ($flag) { break }
}

$flag = $false

# Pergunta a extensao desejada para a conversao
while ($true) {
    Write-Host "Quer criar um ZIP dos arquivos convertidos?:"
    Write-Host "1 - Sim"
    Write-Host "2 - Não"
    Write-Host "0 - Sair"
    $escolhaZip = Read-Host "Opção"

    switch ($escolhaZip) {
        "1" {
            $criarZip = $true
            $flag = $true
        }
        "2" {
            $criarZip = $false
            $flag = $true
        }
        default {
            Write-Host "Opção inválida. Tente novamente.`n"
            continue
        }
    }

    if ($flag) { break }
}

# Pergunta se quer deletar os arquivos Originais
while ($true) {
    Write-Host "Deseja deletar os arquivos originais:"
    Write-Host "1 - Sim"
    Write-Host "2 - Não"
    $escolhaDel = Read-Host "Opção"

    switch ($escolhaDel) {
        "1" {
            $deletar = $true
            $flag = $true
        }
        "2" {
            $deletar = $false
            $flag = $true
        }
        default {
            Write-Host "Opção inválida. Tente novamente.`n"
            continue
        }
    }

    if ($flag) { break }
}

$flag = $false

#Mensagem para a conversao
Write-Host "`nConvertendo imagens para *.$formatoEscolhido* ...`n"

#Para cada item em imagens, ele realiza a conversão para o formato escolhido (JPG ou PNG), envia 
#a imagem convertida para a pasta "Convertida" e a imagem original para a pasta "Original"
foreach ($img in $images) {

    # Nome do arquivo convertido
    $nomeArq = [System.IO.Path]::GetFileNameWithoutExtension($img.Name) + "." + $formatoEscolhido
    $pastaFinal = Join-Path $pastaConvertida $nomeArq

    # Executa a conversão com ImageMagick
    magick "$($img.FullName)" "$pastaFinal"

    #Deleta as imagens originais
    if ($deletar){
        Remove-Item -Path $img.FullName -Force
    #Move as imagens originais pra pasta
    } else {
    Move-Item -Path $img.FullName -Destination $pastaOriginal -Force
    }

    Write-Host "Convertido: $($img.Name) → $n"
}

#Cria um zip das imagens convertidas
if ($criarZip) {
    $zipNome = Join-Path $pastaMain "Convertidas.zip"
    Compress-Archive -Path $pastaConvertida\* -DestinationPath $zipNome
}

#Mensagem de confirmação final
Write-Host "`nProcesso concluido!"
Write-Host "Convertidas em: $pastaConvertida"
Write-Host "Originais em: $pastaOriginal"

About The Author

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *