elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problemas con Re-dimencion de imagenes (solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con Re-dimencion de imagenes (solved)  (Leído 1,435 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Problemas con Re-dimencion de imagenes (solved)
« en: 4 Febrero 2011, 23:24 pm »

Buenas..

Quiero implementar un código que me permita redimencionar una imagen o todas las imágenes de un directorio, en donde se le pasan 2 argumentos que son:

argumento 1: nombre de la imagen o directorio.
argumento 2: el width solamente.

En donde si como argumento 1 se le pasa el nombre de imagen entonces la redimenciona, si se le pasa un directorio entonces redimenciona todas.
En donde como argumento 2 es el width deseado, si el width es mayor a la dimencion real de la imagen, entonces no se redimenciona, si sobre pasa, entonces se redimenciona pero utilizando niveles porcentuales. Vaya, si la imagen real es de: 500x850 y deseamos un width de 120, entonces el height lo calculamos en base a la reducción en porcentaje que sufrio el width de 800. Quedando una imagen de 120x204.

Mi código realiza todo el proceso solo que no me genera la imagen en si :(, solo genera imagenes en color negro, ya estuve viendo el code y no encuentro mi error, espero puedan ayudarme:

Aqui un Screenshot

Código
  1. <?php
  2. function crear_imagen( $formato, $archivo )
  3. {
  4. if( !strcmp($formato, "image/jpeg") )
  5. $img= imagecreatefromjpeg($archivo);
  6. else if( !strcmp($formato, "image/jpg") )
  7. $img= imagecreatefromjpeg($archivo);
  8. else if( !strcmp($formato, "image/png") )
  9. $img= imagecreatefrompng($archivo);
  10.  
  11. unset($formato);
  12. return $img;
  13. }
  14.  
  15. # redimenciona una o varias imagenes que este dentro de un directorio
  16. # obtenido mediante el argumento y estableciendo las dimencion deseada o aproximada
  17. function redimencionar_imagen( $data, $sizeall )
  18. {
  19. if( is_dir($data) ) # si es directorio, entonces redimencionaremos todas las imagenes dentro
  20. {
  21. $dir= $data;
  22. $d= opendir($dir); # acrimos directorio
  23. while( ($buf=readdir($d))!==FALSE) #leemos
  24. {
  25. if( strcmp($buf, ".") && strcmp($buf, "..") && !is_dir($buf) ) # si es distinto a patth oculto y no es directorio
  26. {
  27. $tipo= substr( strtolower($buf), -3 ); # extraemos extensión
  28. $nombre= substr( $buf, 0, -4 ); # extraemos nombre real
  29. $new= $nombre. '_resized.'. $tipo; # nuevo nombre con tag y extensión
  30.  
  31. $img= crear_imagen( "image/". $tipo, $dir.$buf ); # creamos imagen apartir de la principal
  32.  
  33. $size= getimagesize($dir.$buf); # obtenemos dimencion de la imagen original
  34. $w= $size[0]; # extraemos width
  35. $h=$size[1]; # extraemos height
  36.  
  37. # si es menor a la dimencion de thumbnails requerida
  38. if( $w<=$sizeall )
  39. {
  40. $width= $w;
  41. $height= $h;
  42. }
  43. else # entonces es mayor, se redimenciona
  44. {
  45. $extract= $w-$sizeall; # obtenemos los pixeles que se quitaran a la dimencion original
  46. $porcentaje= ($extract*100)/$w; # obtenemos porcentaje que se le reducira al width original
  47. $width= $sizeall; # establecemos width deseado
  48. $height= $h-(($h*$porcentaje)/100); # obtenemos dimencion height segun la reduccion del porcentaje
  49. }
  50.  
  51. $thumb= imagecreatetruecolor($width, $height); # creamos imagen con dimenciones
  52. imagecopyresampled($thumb, $img, 0, 0, 0, 0, $width, $height, $w, $h ); # creamos imagen virtual
  53. imprimir_imagen( $thumb, "image/".$tipo, 0, $dir.$new, 100 ); # creamos imagen
  54.  
  55. unset($new, $tipo, $nombre);
  56. }
  57. }
  58. closedir($d);
  59. }
  60. else # entonces es un archivo, redimencionamos la imagen
  61. {
  62. $buf= $data; # copiamos para usar el mismo code de arriba
  63. $tipo= substr( strtolower($buf), -3 ); # extraemos extensión
  64. $nombre= substr( $buf, 0, -4 ); # extraemos nombre real
  65. $new= $nombre. '_resized.'. $tipo; # nuevo nombre con tag y extensión
  66.  
  67. $img= crear_imagen( "image/". $tipo, $buf ); # creamos imagen apartir de la principal
  68.  
  69. $size= getimagesize($buf); # obtenemos dimencion de la imagen original
  70. $w= $size[0]; # extraemos width
  71. $h=$size[1]; # extraemos height
  72.  
  73. # si es menor a la dimencion de thumbnails requerida
  74. if( $w<=$sizeall )
  75. {
  76. $width= $w;
  77. $height= $h;
  78. }
  79. else # entonces es mayor, se redimenciona
  80. {
  81. $extract= $w-$sizeall; # obtenemos los pixeles que se quitaran a la dimencion original
  82. $porcentaje= ($extract*100)/$w; # obtenemos porcentaje que se le reducira al width original
  83. $width= $sizeall; # establecemos width deseado
  84. $height= $h-(($h*$porcentaje)/100); # obtenemos dimencion height segun la reduccion del porcentaje
  85. }
  86.  
  87. # obtenemos el directorio
  88. $x= explode("/", $buf ); # explotamos
  89. $dir='';
  90. # recorremos arreglo excluyendo el ultimo valor para dar con el directorio real
  91. for($i=0; $i<(count($x)-1); $i++ )
  92. $dir .= $x[$i]; # concatenamos
  93.  
  94. $thumb= imagecreatetruecolor($width, $height); # creamos imagen con dimenciones
  95. imagecopyresampled($thumb, $img, 0, 0, 0, 0, $width, $height, $w, $h ); # creamos imagen virtual
  96. imprimir_imagen( $thumb, "image/".$tipo, 0, $dir.$new, 100 ); # creamos imagen
  97.  
  98. unset($new, $tipo, $nombre, $dir, $x, $i);  
  99. }
  100. }
  101. ?>

Código
  1. <?php
  2. function imprimir_imagen( $img, $formato, $modo, $url, $calidad )
  3. {
  4. if( $modo==1 ) //se mostrara al tiempo
  5. header_imagen( $formato );
  6. //entonces si modo es 0 no se imprime, se GUARDA
  7.  
  8. if( !strcmp($formato, "image/jpeg") )
  9. return imagejpeg($img, $url, $calidad );
  10. else if( !strcmp($formato, "image/jpg") )
  11. return imagejpeg($img, $url, $calidad );
  12. else if( !strcmp($formato, "image/png") )
  13. return imagepng($img, $url, $calidad );
  14.  
  15. return 0;
  16. unset($formato);
  17. unset($img);
  18. }
  19. ?>


« Última modificación: 4 Febrero 2011, 23:45 pm por Diabliyo » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Problemas con Re-dimencion de imagenes (solved)
« Respuesta #1 en: 4 Febrero 2011, 23:46 pm »

Ya quedo... el error estaba en la función imagecopyresampled() me faltaban 2 argumentos al final...

YA CORREGI el codigo que esta al inicio del post y agrego aqui el dato que se corrigio:

Código
  1. <?php
  2. imagecopyresampled($thumb, $img, 0, 0, 0, 0, $width, $height, $w, $h ); # creamos imagen virtual
  3. ?>

Saludos !


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLVED: ] Problema .xinitrc
GNU/Linux
n3w 0 2,715 Último mensaje 30 Diciembre 2010, 20:32 pm
por n3w
De un archivo con comandos a array ? (solved)
PHP
Diabliyo 3 3,286 Último mensaje 11 Enero 2011, 23:12 pm
por WHK
Ayuda con preg_replace() !! (solved) « 1 2 »
PHP
Diabliyo 16 8,232 Último mensaje 4 Febrero 2011, 22:50 pm
por Diabliyo
Es apache, yo o mi proveedor ? (solved) « 1 2 »
PHP
Diabliyo 15 6,337 Último mensaje 3 Febrero 2011, 00:06 am
por Diabliyo
Array de clases sin dimencion
.NET (C#, VB.NET, ASP)
Fabricio 4 2,616 Último mensaje 3 Agosto 2017, 13:24 pm
por Fabricio
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines