// Este script você pode usar assim... thumb.php?src=imagem.jpg&w=200
// onde o parâmetro src = caminho da imagem e w = largura desejada
// Aqui, um jeito fácil e rápido de pegar a extensão do arquivo em qualquer string
// Como meu site fica no dreamhost e eu quero pegar imagens de fontes externas, tive que usar
// o cURL para receber a imagem. Este código eu peguei do wiki deles. Dá uma olhada:
// http://wiki.dreamhost.com/CURL
$source = $_GET['src'];
$timeout = 0;
// Depois eu transformo esta imagem num objeto que o php vai poder manipular
// Como eu não podia usar o getimagesize (por causa de restrições de segurança do Dreamhost)
// eu utilizei estas funções para pegar as dimensões da imagem
// O lugar de onde eu estava pegando as imagens podia me direcionar para outra imagem caso aquela não
// fosse mais encontrada no servidor, de forma que o script retornava uma imagem invalida. Para evitar
// este tipo de coisa, eu checo se os valores das dimensões estão setados, e caso não estejam, eu pego uma
// imagem local (no caso a "img+nd.jpg") e a utilizo no lugar da que seria carregada inicialmente
if($width == false || $height == false) {
$ext = "jpg";
}
// Aqui eu carrego alguns valores de acordo com o tipo da imagem. $toshow é a função que eu irei utilizar para mostrar
// a imagem, e $mime é o mime type da imagem
switch($ext) {
case "jpg":
$toshow = "imagejpeg";
$mime = "image/jpeg";
break;
case "gif":
$toshow = "imagegif";
$mime = "image/gif";
break;
case "png":
$toshow = "imagepng";
$mime = "image/png";
break;
}
// Defino o cabeçalho do documento dizendo que esta é a imagem tipo tal...
header("Content-type: ".$mime);
// Se a largura da minha imagem for maior do que a largura que eu especifiquei na chamada do arquivo, eu redimensiono
// esta imagem
if(isset($_GET['w']) && $width > $_GET['w']) {
$newwidth = $_GET['w'];
$newheight = ($height / $width) * $newwidth;
$tmp = imagecreate($newwidth,$newheight); // crio uma imagem vazia com as novas dimensões
imagecopyresampled($tmp, $img, 0
, 0
, 0
, 0
, $newwidth, $newheight, $width, $height); // copio a imagem original para a imagem http://wiki.dreamhost.com/CURL
eval($toshow."(\$tmp);"); // utilizo eval para executar a função para mostrar a imagem de acordo com o que foi estabelecido no switch acima
imagedestroy($tmp); // destruo e libero memória da imagem que acabou de ser criada
} else {
// Caso contrário, eu simplesmente mostro a imagem
eval($toshow."(\$img);");
}
imagedestroy($img); //destruo e libero memória da imagem que foi utilizada