Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2011, 09:26
Avatar de kimmy
kimmy
 
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Exclamación Funcion no redimensiona fotos mas pequeñas

Hola amigos. Estoy usando una funcion que encontre por alli para redimensionar fotos y guardar en carpeta. El problema es que cuando la foto que subo es menor que el tamaño del resize, no me aplica las medidas exactas a la foto grande ni al thumbnail. Este es el código:

Código PHP:
Ver original
  1. include ('funciones.php');
  2.  
  3. $foto_nombre = $_POST['foto_nombre'];
  4.  
  5. function redimensionar($type, $img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
  6. {
  7. $defecto = $foto_nombre;
  8. if(file_exists($img_original)) {
  9. // crear imagen desde original
  10. $type=strtolower($type);
  11. switch($type)
  12. {
  13. case 'jpeg': $img = imagecreatefromjpeg($img_original); break;
  14. case 'jpg': $img = imagecreatefromjpeg($img_original); break;
  15. case 'png': $img = imagecreatefrompng($img_original); break;
  16. case 'gif': $img = imagecreatefromgif($img_original); break;
  17. case 'wbmp': $img = imagecreatefromwbmp($img_original); break;
  18. default: $img = imagecreatefromjpeg($defecto); break;
  19. }
  20. } else {
  21. $img = imagecreatefromjpeg($defecto);
  22. }
  23. if(!empty($img)) {
  24. $new_w_R = imagesx($img);
  25. $new_h_R = imagesy($img);
  26. //$img_nueva_altura = 50;
  27. // se calcula la relación alto/ancho
  28. $aspect_ratio = $new_h_R/$new_w_R;
  29. $aspect_ratio2 = $new_w_R/$new_h_R;
  30. if ($new_w_R >= $new_h_R){
  31. // se ajusta al nuevo tamaño
  32. $img_nueva_altura = abs($img_nueva_anchura * $aspect_ratio);
  33. }
  34. else{$img_nueva_anchura = abs($img_nueva_altura * $aspect_ratio2);}
  35. // crear imagen nueva
  36.  
  37. $thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
  38. // redimensionar imagen original copiandola en la imagen. La imagen se reajustará al nuevo tamaño
  39. imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_anchura,
  40. $img_nueva_altura,imagesx($img),imagesy($img));
  41. // guardar la imagen redimensionada donde indica $img_nueva
  42. imagejpeg($thumb,$img_nueva,$img_nueva_calidad);
  43. }
  44. }
  45.  
  46. //inseción de imagen
  47. //$fileName = $max."_".$_FILES['userfile']['name'];
  48. $extension = explode(".",$_FILES['foto']['name']);
  49. //$fileName = $extension[0].".".$extension[1];
  50. $fileName = $foto_nombre.".".$extension[1];
  51. $tmpName = $_FILES['foto']['tmp_name'];
  52. $fileSize = $_FILES['foto']['size'];
  53. $fileType = $_FILES['foto']['type'];
  54. //echo $tmpName;
  55. $uploaddir = "images/galeria/large/";
  56. $uploadfile = $uploaddir . $fileName ;
  57.  
  58. if (move_uploaded_file($tmpName, $uploadfile)) {
  59. chmod($uploadfile, 0644);
  60. //echo "File is valid, and was successfully uploaded.\n";
  61. //redimensionar
  62. $source=$uploadfile; // archivo de origen
  63. $dest=$uploaddir.$foto_nombre."th.".$extension[1]; // archivo de destino
  64. $dest2=$uploaddir.$foto_nombre.".".$extension[1]; // archivo de destino
  65. // echo "nuevoarchivo ".$dest;
  66. /* $img_nueva_anchura=120;
  67. $img_nueva_altura=120;
  68. $img_nueva_calidad=100;*/
  69. //redimensionar_jpeg($source,$dest,$img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad);
  70. // Ejemplo
  71. redimensionar("jpg",$source,$dest,54,54,95);
  72. redimensionar("jpg",$source,$dest2,445,400,95);
  73. //finredimensionar
  74. } else {
  75. // echo "Possible file upload attack!\n";
  76.  
  77. //print_r($_FILES);
  78. }

No entiendo que está funcionando mal. Por favor si pueden darme algunas sugerencias. Gracias
__________________
Caminando con el corazón partío

Última edición por kimmy; 16/06/2011 a las 09:44 Razón: errores en el código