Redimensionando imagens automaticamente com o PHP

As vezes, dependendo do site, precisamos que as imagens sejam redimensionadas automaticamente após o upload… E fique sabendo que essa é uma tarefa muito simples! :D
Mas porque perder tempo com isso? Não é melhor limitar o upload de imagens, permitindo apenas uma resolução? Sim.. É mais fácil pra você.. mas não pro end-user. É melhor você perder uma ou duas horas e fazer um sistema muito mais fácil de ser usado e facilitar a vida do usuário… Vai ser melhor pra você e pra ele, acredite.
Existe uma classe pronta de PHP que eu gosto muito, chama WideImage… Vou mostrar aqui como usá-la para redimensionar (resize) e cortar (crop) imagens automaticamente, gerando (ou não) arquivos novos. Para um sistema que gera miniaturas (thumbs) isso é mais do que o suficiente.
 

Redimensionando imagens

<?php
// Chama o arquivo com a classe WideImage
require('/caminho/WideImage.inc.php');
// Carrega a imagem a ser manipulada
$image = wiImage::load('/caminho/foto.jpg');
// Redimensiona a imagem
$image = $image->resize(400, 300);
// Salva a imagem em um arquivo (novo ou não)
$image->saveToFile('/caminho/nova_foto.jpg');
?>

Cortando imagens

<?php
// Chama o arquivo com a classe WideImage
require('/caminho/WideImage.inc.php');
// Carrega a imagem a ser manipulada
$image = wiImage::load('/caminho/foto.jpg');
// Corta a imagem (Argumentos: X1, Y1, X2, Y2)
$image = $image->crop(10, 20, 110, 120);
// Faz um quadrado da posição [X1;Y1] até [X2;Y2]
// Salva a imagem em um arquivo (novo ou não)
$image->saveToFile('/caminho/nova_foto.jpg');
?>

Mudando a qualidade de imagens

<?php
// Chama o arquivo com a classe WideImage
require('/caminho/WideImage.inc.php');
// Carrega a imagem a ser manipulada
$image = wiImage::load('/caminho/foto.jpg');
// Salva a imagem em um arquivo com 80% de qualidade
$image->saveToFile('/caminho/nova_foto.jpg', null, 80);
?>

Estes foram apenas alguns exemplos… A classe pode fazer muito mais: tons de cinza, marca d’agua, rotacionar, flip, espelho, filtros PNG e muito mais… Acesse o site da classe para ver outros exemplos e a documentação dos métodos dela.