🖼️ Guia de Otimização de Imagens no Windows

Este guia explica como usar o script de otimização de imagens no Windows.

📋 Pré-requisitos

1. Instalar ImageMagick

Opção A: Chocolatey (Recomendado)

choco install imagemagick

Opção B: Download Manual

  1. Acesse: https://imagemagick.org/script/download.php#windows
  2. Baixe o instalador
  3. Instale e adicione ao PATH

Verificar instalação:

magick -version

2. Instalar cwebp (Google WebP)

Opção A: Chocolatey

choco install webp

Opção B: Download Manual

  1. Acesse: https://developers.google.com/speed/webp/download
  2. Baixe o pacote para Windows
  3. Extraia e adicione ao PATH

Verificar instalação:

cwebp -version

🚀 Como Usar

Uso Básico

# Otimizar todas as imagens em assets\img
.\scripts\optimize_images.ps1

Opções Avançadas

# Especificar pasta diferente
.\scripts\optimize_images.ps1 -Path "assets\icons"

# Ajustar qualidade (1-100, padrão: 80)
.\scripts\optimize_images.ps1 -Quality 85

# Limitar largura máxima (padrão: 1920px)
.\scripts\optimize_images.ps1 -MaxWidth 1600

# Desabilitar conversão para WebP
.\scripts\optimize_images.ps1 -ConvertToWebP:$false

# Desabilitar redimensionamento
.\scripts\optimize_images.ps1 -Resize:$false

# Desabilitar compressão
.\scripts\optimize_images.ps1 -Compress:$false

# Modo de teste (não modifica arquivos)
.\scripts\optimize_images.ps1 -DryRun

Exemplo Completo

# Otimizar com qualidade alta, sem redimensionar
.\scripts\optimize_images.ps1 -Quality 90 -Resize:$false

# Apenas converter para WebP
.\scripts\optimize_images.ps1 -Resize:$false -Compress:$false

# Apenas redimensionar imagens grandes
.\scripts\optimize_images.ps1 -ConvertToWebP:$false -Compress:$false

📊 O que o Script Faz

  1. Converte para WebP: Cria versões WebP de todas as imagens (mantém original)
  2. Redimensiona: Reduz imagens maiores que 1920px mantendo proporção
  3. Comprime: Otimiza JPEG/PNG removendo metadados e reduzindo qualidade

⚙️ Parâmetros

Parâmetro Tipo Padrão Descrição
-Path string assets\img Pasta com imagens
-Quality int 80 Qualidade (1-100)
-MaxWidth int 1920 Largura máxima em pixels
-ConvertToWebP switch $true Converter para WebP
-Resize switch $true Redimensionar imagens grandes
-Compress switch $true Comprimir JPEG/PNG
-DryRun switch $false Modo de teste

🔍 Verificar Resultados

# Ver tamanho das imagens antes/depois
Get-ChildItem assets\img -Recurse -Include *.jpg,*.png,*.webp | 
    Select-Object Name, Length, @{Name="Size";Expression={"{0:N2} KB" -f ($_.Length/1KB)}}

# Comparar tamanhos
Get-ChildItem assets\img -Recurse -Include *.jpg | 
    ForEach-Object {
        $webp = $_.FullName -replace '\.(jpg|png)$', '.webp'
        if (Test-Path $webp) {
            $original = $_.Length
            $converted = (Get-Item $webp).Length
            $savings = $original - $converted
            $percent = ($savings / $original) * 100
            [PSCustomObject]@{
                File = $_.Name
                Original = "{0:N2} KB" -f ($original/1KB)
                WebP = "{0:N2} KB" -f ($converted/1KB)
                Savings = "{0:N2} KB ({1:N1}%)" -f ($savings/1KB), $percent
            }
        }
    } | Format-Table -AutoSize

⚠️ Avisos Importantes

  1. Backup: Sempre faça backup antes de otimizar!
  2. Git: As imagens otimizadas serão modificadas
  3. WebP: Versões WebP são criadas, originais são mantidas
  4. Irreversível: A compressão reduz qualidade permanentemente

🐛 Solução de Problemas

Erro: “magick não é reconhecido”

  • Verifique se ImageMagick está instalado
  • Adicione ao PATH do sistema
  • Reinicie o PowerShell

Erro: “cwebp não é reconhecido”

  • Verifique se cwebp está instalado
  • Adicione ao PATH do sistema
  • Reinicie o PowerShell

Script não executa

# Permitir execução de scripts (apenas uma vez)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Imagens não são modificadas

  • Verifique permissões de escrita
  • Execute como administrador se necessário
  • Verifique se os arquivos não estão em uso

📚 Recursos Adicionais

💡 Dicas

  1. Use DryRun primeiro: Teste com -DryRun antes de aplicar
  2. Qualidade balanceada: 80-85 é geralmente suficiente
  3. WebP primeiro: Converta para WebP antes de comprimir originais
  4. Backup: Sempre mantenha backups das imagens originais
  5. Versionamento: Commit as imagens otimizadas no Git

📝 Exemplo de Workflow

# 1. Fazer backup
Copy-Item assets\img assets\img.backup -Recurse

# 2. Testar otimização
.\scripts\optimize_images.ps1 -DryRun

# 3. Aplicar otimização
.\scripts\optimize_images.ps1 -Quality 85

# 4. Verificar resultados
Get-ChildItem assets\img -Recurse -Include *.webp | Measure-Object -Property Length -Sum

# 5. Commit no Git
git add assets\img
git commit -m "Otimizar imagens"