Problemas con Re-dimencion de imagenes (solved)

Iniciado por Diabliyo, 4 Febrero 2011, 23:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

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 (php) [Seleccionar]
<?php
function crear_imagen$formato$archivo )
{
if( !strcmp($formato"image/jpeg") )
$imgimagecreatefromjpeg($archivo);
else if( !strcmp($formato"image/jpg") )
$imgimagecreatefromjpeg($archivo);
else if( !strcmp($formato"image/png") )
$imgimagecreatefrompng($archivo);

unset($formato);
return $img
}

# redimenciona una o varias imagenes que este dentro de un directorio
# obtenido mediante el argumento y estableciendo las dimencion deseada o aproximada 
function redimencionar_imagen$data$sizeall )
{
if( is_dir($data) ) # si es directorio, entonces redimencionaremos todas las imagenes dentro 
{
$dir$data;
$dopendir($dir); # acrimos directorio
while( ($buf=readdir($d))!==FALSE#leemos
{
if( strcmp($buf".") && strcmp($buf"..") && !is_dir($buf) ) # si es distinto a patth oculto y no es directorio
{
$tiposubstrstrtolower($buf), -); # extraemos extensión
$nombresubstr$buf0, -); # extraemos nombre real
$new$nombre'_resized.'$tipo# nuevo nombre con tag y extensión

$imgcrear_imagen"image/"$tipo$dir.$buf ); # creamos imagen apartir de la principal

$sizegetimagesize($dir.$buf); # obtenemos dimencion de la imagen original
$w$size[0]; # extraemos width
$h=$size[1]; # extraemos height

# si es menor a la dimencion de thumbnails requerida
if( $w<=$sizeall )
{
$width$w;
$height$h;
}
else # entonces es mayor, se redimenciona
{
$extract$w-$sizeall# obtenemos los pixeles que se quitaran a la dimencion original
$porcentaje= ($extract*100)/$w# obtenemos porcentaje que se le reducira al width original
$width$sizeall# establecemos width deseado
$height$h-(($h*$porcentaje)/100); # obtenemos dimencion height segun la reduccion del porcentaje
}

$thumbimagecreatetruecolor($width$height); # creamos imagen con dimenciones
imagecopyresampled($thumb$img0000$width$height$w$h ); # creamos imagen virtual
imprimir_imagen$thumb"image/".$tipo0$dir.$new100 ); # creamos imagen

unset($new$tipo$nombre); 
}
}
closedir($d);
}
else # entonces es un archivo, redimencionamos la imagen
{
$buf$data# copiamos para usar el mismo code de arriba
$tiposubstrstrtolower($buf), -); # extraemos extensión
$nombresubstr$buf0, -); # extraemos nombre real
$new$nombre'_resized.'$tipo# nuevo nombre con tag y extensión

$imgcrear_imagen"image/"$tipo$buf ); # creamos imagen apartir de la principal

$sizegetimagesize($buf); # obtenemos dimencion de la imagen original
$w$size[0]; # extraemos width
$h=$size[1]; # extraemos height

# si es menor a la dimencion de thumbnails requerida
if( $w<=$sizeall )
{
$width$w;
$height$h;
}
else # entonces es mayor, se redimenciona
{
$extract$w-$sizeall# obtenemos los pixeles que se quitaran a la dimencion original
$porcentaje= ($extract*100)/$w# obtenemos porcentaje que se le reducira al width original
$width$sizeall# establecemos width deseado
$height$h-(($h*$porcentaje)/100); # obtenemos dimencion height segun la reduccion del porcentaje
}

# obtenemos el directorio
$xexplode("/"$buf ); # explotamos
$dir='';
# recorremos arreglo excluyendo el ultimo valor para dar con el directorio real
for($i=0$i<(count($x)-1); $i++ )
$dir .= $x[$i]; # concatenamos
 
$thumbimagecreatetruecolor($width$height); # creamos imagen con dimenciones
imagecopyresampled($thumb$img0000$width$height$w$h ); # creamos imagen virtual
imprimir_imagen$thumb"image/".$tipo0$dir.$new100 ); # creamos imagen

unset($new$tipo$nombre$dir$x$i);  
}
}
?>


Código (php) [Seleccionar]
<?php
function imprimir_imagen$img$formato$modo$url$calidad )
{
if( $modo==//se mostrara al tiempo
header_imagen$formato );
//entonces si modo es 0 no se imprime, se GUARDA

if( !strcmp($formato"image/jpeg") )
return imagejpeg($img$url$calidad );
else if( !strcmp($formato"image/jpg") )
return imagejpeg($img$url$calidad );
else if( !strcmp($formato"image/png") )
return imagepng($img$url$calidad );

return 0;
unset($formato);
unset($img); 
}
?>

Diabliyo

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 (php) [Seleccionar]

<?php
imagecopyresampled
($thumb$img0000$width$height$w$h ); # creamos imagen virtual
?>


Saludos !