Posted by Eber on Fri 3 Oct 03:28
report abuse | download | new post
- // 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'];
- $ch = curl_init();
- $timeout = 0;
- curl_setopt($ch, CURLOPT_URL, $source);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
- $image = curl_exec($ch);
- curl_close($ch);
- // Depois eu transformo esta imagem num objeto que o php vai poder manipular
- $img = imagecreatefromstring($image);
- // 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
- $width = imagesx($img);
- $height = imagesy($img);
- // 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";
- imagedestroy($img);
- $img = imagecreatefromjpeg("img_nd.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...
- // Se a largura da minha imagem for maior do que a largura que eu especifiquei na chamada do arquivo, eu redimensiono
- // esta imagem
- $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
- }
- imagedestroy($img); //destruo e libero memória da imagem que foi utilizada
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.