Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/06/2011, 08:33
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: Como crear thumbnails o miniaturas.

Esta es una función que encontré hace un tiempo, creo que en el mismo manual de PHP. Te puse un ejemplo de cómo usarla y cómo guardar la miniatura para usar después.

Sólo soporta jpeg, pero es sencillo (digamos) modificarla para que soporte otros formatos. Acá la ves en funcionamiento:

http://nahueljose.com.ar/thumbnail/
Código PHP:
Ver original
  1. <?php
  2.  
  3. $imagen_original = 'homero.jpg';
  4. $imagen_th = 'th_' . $imagen_original;
  5. $ancho_th = 100;
  6. $alto_th = 100;
  7. $calidad = 80;
  8.  
  9. //redimensionar imagen
  10. $imagenjpeg = CroppedThumbnailJPEG($imagen_original,$ancho_th,$alto_th);
  11. //guardar en directorio actual
  12. imagejpeg($imagenjpeg,$imagen_th,$calidad);
  13. imagedestroy($imagenjpeg);
  14. //mostrar
  15. echo "<p>Imagen original: </p><img src='$imagen_original' /></p>";
  16. echo "<p>Imagen miniatura: </p><img src='$imagen_th' /></p>";
  17.  
  18.  
  19.  
  20. function CroppedThumbnailJPEG($imgSrc,$thumbnail_width,$thumbnail_height) {
  21.     //getting the image dimensions  
  22.     list($width_orig, $height_orig) = getimagesize($imgSrc);  
  23.     $myImage = imagecreatefromjpeg($imgSrc);
  24.     $ratio_orig = $width_orig/$height_orig;
  25.    
  26.     if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
  27.        $new_height = $thumbnail_width/$ratio_orig;
  28.        $new_width = $thumbnail_width;
  29.     } else {
  30.        $new_width = $thumbnail_height*$ratio_orig;
  31.        $new_height = $thumbnail_height;
  32.     }
  33.    
  34.     $x_mid = $new_width/2;  //horizontal middle
  35.     $y_mid = $new_height/2; //vertical middle
  36.    
  37.     $process = imagecreatetruecolor(round($new_width), round($new_height));
  38.    
  39.     imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
  40.     $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
  41.     imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height);
  42.  
  43.     imagedestroy($process);
  44.     imagedestroy($myImage);
  45.     return $thumb;
  46. }
  47. ?>
__________________
nahueljose.com.ar