pastebin - collaborative debugging

pastebin is a collaborative debugging tool allowing you to share and modify code snippets while chatting on IRC, IM or a message board.

This site is developed to XHTML and CSS2 W3C standards. If you see this paragraph, your browser does not support those standards and you need to upgrade. Visit WaSP for a variety of options.

PHP pastebin - collaborative debugging tool View Help


Posted by Eber on Fri 3 Oct 03:28
report abuse | download | new post

  1. // Este script você pode usar assim... thumb.php?src=imagem.jpg&w=200
  2. // onde o parâmetro src = caminho da imagem e w = largura desejada
  3.  
  4. // Aqui, um jeito fácil e rápido de pegar a extensão do arquivo em qualquer string
  5. $ext = strtolower(substr(strrchr($_GET['src'], "."), 1));
  6.  
  7. // Como meu site fica no dreamhost e eu quero pegar imagens de fontes externas, tive que usar
  8. // o cURL para receber a imagem. Este código eu peguei do wiki deles. Dá uma olhada:
  9. // http://wiki.dreamhost.com/CURL
  10. $source = $_GET['src'];
  11. $ch = curl_init();
  12. $timeout = 0;
  13. curl_setopt($ch, CURLOPT_URL, $source);
  14. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  15. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  17. $image = curl_exec($ch);
  18. curl_close($ch);
  19.  
  20. // Depois eu transformo esta imagem num objeto que o php vai poder manipular
  21. $img = imagecreatefromstring($image);
  22.  
  23. // Como eu não podia usar o getimagesize (por causa de restrições de segurança do Dreamhost)
  24. // eu utilizei estas funções para pegar as dimensões da imagem
  25. $width = imagesx($img);
  26. $height = imagesy($img);
  27.  
  28. // O lugar de onde eu estava pegando as imagens podia me direcionar para outra imagem caso aquela não
  29. // fosse mais encontrada no servidor, de forma que o script retornava uma imagem invalida. Para evitar
  30. // este tipo de coisa, eu checo se os valores das dimensões estão setados, e caso não estejam, eu pego uma
  31. // imagem local (no caso a "img+nd.jpg") e a utilizo no lugar da que seria carregada inicialmente
  32. if($width == false || $height == false) {
  33.         $ext = "jpg";
  34.         imagedestroy($img);
  35.         $img = imagecreatefromjpeg("img_nd.jpg");
  36.         list($width, $height) = getimagesize("img_nd.jpg");
  37. }
  38.  
  39. // Aqui eu carrego alguns valores de acordo com o tipo da imagem. $toshow é a função que eu irei utilizar para mostrar
  40. // a imagem, e $mime é o mime type da imagem
  41. switch($ext) {
  42.         case "jpg":
  43.                 $toshow = "imagejpeg";
  44.                 $mime = "image/jpeg";
  45.                 break;
  46.         case "gif":
  47.                 $toshow = "imagegif";
  48.                 $mime = "image/gif";
  49.                 break;
  50.         case "png":
  51.                 $toshow = "imagepng";
  52.                 $mime = "image/png";
  53.                 break;
  54. }
  55.  
  56. // Defino o cabeçalho do documento dizendo que esta é a imagem tipo tal...
  57. header("Content-type: ".$mime);
  58.  
  59. // Se a largura da minha imagem for maior do que a largura que eu especifiquei na chamada do arquivo, eu redimensiono
  60. // esta imagem
  61. if(isset($_GET['w']) && $width > $_GET['w']) {
  62.         $newwidth = $_GET['w'];
  63.         $newheight = ($height / $width) * $newwidth;
  64.         $tmp = imagecreate($newwidth,$newheight); // crio uma imagem vazia com as novas dimensões
  65.         imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // copio a imagem original para a imagem http://wiki.dreamhost.com/CURL
  66.         eval($toshow."(\$tmp);"); // utilizo eval para executar a função para mostrar a imagem de acordo com o que foi estabelecido no switch acima
  67.         imagedestroy($tmp); // destruo e libero memória da imagem que acabou de ser criada
  68. } else {
  69.         // Caso contrário, eu simplesmente mostro a imagem
  70.         eval($toshow."(\$img);");
  71. }
  72.  
  73. imagedestroy($img); //destruo e libero memória da imagem que foi utilizada
  74.  
  75. die(); // FIM!

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.

Syntax highlighting:

To highlight particular lines, prefix each line with @@


Remember me so that I can delete my post