Reduzir imagens (tamanho) de um diretório WEB com PHP

Para criar um script automático em PHP que reduza todos os arquivos de um diretório de imagens, você pode utilizar a biblioteca de manipulação de imagens chamada “GD” (Graphics Draw) que já vem integrada com o PHP. Este exemplo utiliza a biblioteca GD para reduzir o tamanho de imagens JPEG e PNG em um diretório. Certifique-se de que a extensão GD esteja ativada no seu servidor PHP.

<?php
// Diretório das imagens originais
$diretorioOrigem = 'caminho/para/diretorio/origem/';

// Diretório para salvar as imagens reduzidas
$diretorioDestino = 'caminho/para/diretorio/destino/';

// Fator de redução (por exemplo, 0.5 reduzirá pela metade)
$fatorReducao = 0.5;

// Pega a lista de arquivos no diretório
$files = scandir($diretorioOrigem);

foreach ($files as $file) {
    if (in_array($file, array('.', '..'))) {
        continue;
    }

    $caminhoCompletoOrigem = $diretorioOrigem . $file;
    $caminhoCompletoDestino = $diretorioDestino . $file;

    // Obtém a extensão do arquivo
    $extensao = pathinfo($caminhoCompletoOrigem, PATHINFO_EXTENSION);

    // Verifica se é uma imagem JPEG ou PNG
    if (in_array($extensao, array('jpeg', 'jpg', 'png'))) {
        // Carrega a imagem original
        $imagemOriginal = imagecreatefromjpeg($caminhoCompletoOrigem); // Use imagecreatefrompng() para imagens PNG

        // Obtém as dimensões da imagem original
        $larguraOriginal = imagesx($imagemOriginal);
        $alturaOriginal = imagesy($imagemOriginal);

        // Calcula as novas dimensões com base no fator de redução
        $novaLargura = $larguraOriginal * $fatorReducao;
        $novaAltura = $alturaOriginal * $fatorReducao;

        // Cria uma nova imagem com as dimensões reduzidas
        $imagemReduzida = imagecreatetruecolor($novaLargura, $novaAltura);

        // Redimensiona a imagem original para a nova imagem reduzida
        imagecopyresampled($imagemReduzida, $imagemOriginal, 0, 0, 0, 0, $novaLargura, $novaAltura, $larguraOriginal, $alturaOriginal);

        // Salva a imagem reduzida no diretório de destino
        imagejpeg($imagemReduzida, $caminhoCompletoDestino); // Use imagepng() para imagens PNG

        // Libera a memória das imagens
        imagedestroy($imagemOriginal);
        imagedestroy($imagemReduzida);

        echo "Imagem $file reduzida e salva.\n";
    } else {
        echo "Arquivo $file não é uma imagem suportada.\n";
    }
}

echo "Processo de redução de imagens concluído.";
?>

Lembre-se de ajustar os caminhos dos diretórios de origem e destino, bem como o fator de redução conforme necessário. Certifique-se também de que o diretório de destino tenha permissões de escrita. Este é apenas um exemplo básico; você pode expandir e personalizar o script de acordo com suas necessidades específicas.

Rolar para cima