Problemas con thumbnails.
Hola, he realizado el siguiente script para crear thumbnails de imagenes. El caso es que al principio funcionaba bien, pero ahora ha dejado de funcionar, y encima cuando lo cargo, el servidor deja de servir paginas, me podriais decir si se me ha escapado algo que no vea y que pueda originar este error? Gracias de antemano.
Este es el codigo:
$cadena=strtok($ruta,"/");
while ($cadena)
{
$archivo=$cadena;
$cadena=strtok("/");
}
$cadena=strtok($archivo,".");
while ($cadena)
{
$ext=$cadena;
$cadena=strtok(".");
}
$ext=strtolower($ext);
if ($ext=="gif")
{
$fuente = imagecreatefromgif($ruta);
Header("Content-type: image/jpg");
}
if ($ext=="jpeg" or $ext=="jpg")
{
$fuente = imagecreatefromjpeg($ruta);
Header("Content-type: image/jpeg");
}
if ($ext=="png")
{
$fuente = imagecreatefrompng($ruta);
Header("Content-type: image/jpg");
}
$dimension=getimagesize($ruta);
$imgAlto=$dimension[1];
$imgAncho=$dimension[0];
if (!$alto)
{
$alto=60;
}
if (!$ancho)
{
$ancho=60;
}
if ($imgAlto>$imgAncho)
{
$cons=$alto/$imgAlto;
}
if ($imgAlto<$imgAncho)
{
$cons=$ancho/$imgAncho;
}
if ($imgAlto==$imgAncho)
{
$cons=$ancho/$imgAlto;
}
$alto=$cons*$imgAlto;
$ancho=$cons*$imgAncho;
$imagen = imagecreatetruecolor($ancho,$alto);
ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
imagejpeg($imagen,"",75);
ImageDestroy($imagen);
Este es el codigo:
$cadena=strtok($ruta,"/");
while ($cadena)
{
$archivo=$cadena;
$cadena=strtok("/");
}
$cadena=strtok($archivo,".");
while ($cadena)
{
$ext=$cadena;
$cadena=strtok(".");
}
$ext=strtolower($ext);
if ($ext=="gif")
{
$fuente = imagecreatefromgif($ruta);
Header("Content-type: image/jpg");
}
if ($ext=="jpeg" or $ext=="jpg")
{
$fuente = imagecreatefromjpeg($ruta);
Header("Content-type: image/jpeg");
}
if ($ext=="png")
{
$fuente = imagecreatefrompng($ruta);
Header("Content-type: image/jpg");
}
$dimension=getimagesize($ruta);
$imgAlto=$dimension[1];
$imgAncho=$dimension[0];
if (!$alto)
{
$alto=60;
}
if (!$ancho)
{
$ancho=60;
}
if ($imgAlto>$imgAncho)
{
$cons=$alto/$imgAlto;
}
if ($imgAlto<$imgAncho)
{
$cons=$ancho/$imgAncho;
}
if ($imgAlto==$imgAncho)
{
$cons=$ancho/$imgAlto;
}
$alto=$cons*$imgAlto;
$ancho=$cons*$imgAncho;
$imagen = imagecreatetruecolor($ancho,$alto);
ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
imagejpeg($imagen,"",75);
ImageDestroy($imagen);
En realidad, nunca tube problemas, tu codigo me funcionó al 100%, pero, hagarre entre un ejemplo de alla, otro de aca, etc... y mi resultado final es el siguiente:
-----------------------------------------
-----------------------------------------
Primero, el codigo que tu tienes, lo puse en un archivo llamado miniimgs.php
<?php
// Ejemplo: http://localhost/pruebas/galeria/miniimgs.php?ruta=2.jpg
$cadena=strtok($ruta,"/");
while ($cadena)
{
$archivo=$cadena;
$cadena=strtok("/");
}
$cadena=strtok($archivo,".");
while ($cadena)
{
$ext=$cadena;
$cadena=strtok(".");
}
$ext=strtolower($ext);
if ($ext=="gif")
{
$fuente = imagecreatefromgif($ruta);
Header("Content-type: image/jpg");
} elseif ($ext=="jpeg" or $ext=="jpg")
{
$fuente = imagecreatefromjpeg($ruta);
Header("Content-type: image/jpeg");
} elseif ($ext=="png")
{
$fuente = imagecreatefrompng($ruta);
Header("Content-type: image/jpg");
} else { exit(); };
$dimension=getimagesize($ruta);
$imgAlto=$dimension[1];
$imgAncho=$dimension[0];
if (!$alto) { $alto=60; };
if (!$ancho) { $ancho=60; };
if ($imgAlto>$imgAncho) { $cons=$alto/$imgAlto; };
if ($imgAlto<$imgAncho) { $cons=$ancho/$imgAncho; };
if ($imgAlto==$imgAncho) { $cons=$ancho/$imgAlto; };
$alto=$cons*$imgAlto;
$ancho=$cons*$imgAncho;
$imagen = imagecreatetruecolor($ancho,$alto);
ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
imagejpeg($imagen,"",75);
ImageDestroy($imagen);
?>
-----------------------------------------
-----------------------------------------
Para mostrar todas las imagenes que se encuentren en X directorio, use el diguiente archivo...galeria.php
<?php
// Funcion para extraer la extensión de un Archivo dado
function Extension($Archivo)
{
$Archivo=strtok($Archivo,"/");
while ($Archivo)
{
$archivo=$Archivo;
$Archivo=strtok("/");
}
$Archivo=strtok($archivo,".");
while ($Archivo)
{
$Ext=$Archivo;
$Archivo=strtok(".");
}
return strtolower($Ext);
}
// Verificar si se indico algun directorio... de lo contrario, utilizará el actual
if (isset($_POST["dir"])) { $Directorio = $_POST["dir"];} // Busca el parametro en el metodo POST
elseif (isset($_GET["dir"])) { $Directorio = $_GET["dir"];} // Busca el parametro en el metodo GET
else { $Directorio = "./";}; // Si no enviaron el parametro, se especifica
// el directorio actual
if ($Directorio == "") { $Directorio.= "./";}; // Asegura que el Directorio no esté en blanco
if (substr($Directorio,strlen($Directorio)-1,1) != "/") { $Directorio.= "/";}; // Asegura que el fin de la cadena
// sea el la diagonal
// Si el directorio indicado no existe, marca como Galeria no encontrada...
if (!is_dir("$Directorio")) {
print "Galeria no encontrada...";
die();
};
// Abre el directorio
$DirectorioAbierto = opendir("$Directorio");
// Rastrea archivo por archivo el directorio
while ($Archivo = readdir($DirectorioAbierto)) {
if (is_file("$Directorio$Archivo")) {
if (is_readable("$Directorio$Archivo")) {
$Ext = Extension($Archivo);
if ( $Ext=="gif" || ($Ext=="jpeg" or $Ext=="jpg") || $Ext=="png" )
{
$Imagen[] = "<IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'>";
};
};
};
};
// Cuenta el numero de imagenes existentes
$count = count($Imagen);
//if ($count > 1) { sort($Imagen); }; // Ordena las imagenes
// Despliega las imagenes
for ($i = 0; $count > $i; $i ++) {
print $Imagen[$i];
}
?>
----------------------------------------
----------------------------------------
El resultado es una serie de imagenes, de todos los archivos existentes en el directorio que le expecifiques, o en el raiz, si es que no le especificas alguno...
Tu puedes armar tu galeria como quieras, solo tienes que modificar la forma de desplegar las etiquetas <IMG ... que se almacenaron en el vector $Imagenes.. esto es, en las ultimas lineas que dicen:
// Despliega las imagenes
for ($i = 0; $count > $i; $i ++) {
print $Imagen[$i];
}
Alli, hechale cesos para que lo acomodes a tu gusto...
De igual forma, si quieres que la forma de mostrar las imagenes sea distinta, osea, que la lista $Imagenes solo te almacene el nombre del archivo imagen, cambiarias la linea 41 asi:
Originalmente dice:
$Imagen[] = "<IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'>";
Puedes cambiarla por:
$Imagen[] = "'miniimgs.php?ruta=$Archivo'";
O bien, si lo que deseas es que se ponga un link a la imagen que se muestra quedaría así:
$Imagen[] = "<A HREF=''miniimgs.php?ruta=$Archivo''><IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'></A>";
Quizas explique de mas....
Quizas quieras mas soluciones, pero, para eso, piensale tantito.. ;)
Hasta pronto....
[email protected] (casi diario estoy OnLine, pero pocas veces leo mi correo, asi que mejor apuntame en tu lista del MSN... o si me mandas un email, quizas lo lea, pero, por loo regular solo vacio los correos sin leerlos...)
Felices teclasos....
-----------------------------------------
-----------------------------------------
Primero, el codigo que tu tienes, lo puse en un archivo llamado miniimgs.php
<?php
// Ejemplo: http://localhost/pruebas/galeria/miniimgs.php?ruta=2.jpg
$cadena=strtok($ruta,"/");
while ($cadena)
{
$archivo=$cadena;
$cadena=strtok("/");
}
$cadena=strtok($archivo,".");
while ($cadena)
{
$ext=$cadena;
$cadena=strtok(".");
}
$ext=strtolower($ext);
if ($ext=="gif")
{
$fuente = imagecreatefromgif($ruta);
Header("Content-type: image/jpg");
} elseif ($ext=="jpeg" or $ext=="jpg")
{
$fuente = imagecreatefromjpeg($ruta);
Header("Content-type: image/jpeg");
} elseif ($ext=="png")
{
$fuente = imagecreatefrompng($ruta);
Header("Content-type: image/jpg");
} else { exit(); };
$dimension=getimagesize($ruta);
$imgAlto=$dimension[1];
$imgAncho=$dimension[0];
if (!$alto) { $alto=60; };
if (!$ancho) { $ancho=60; };
if ($imgAlto>$imgAncho) { $cons=$alto/$imgAlto; };
if ($imgAlto<$imgAncho) { $cons=$ancho/$imgAncho; };
if ($imgAlto==$imgAncho) { $cons=$ancho/$imgAlto; };
$alto=$cons*$imgAlto;
$ancho=$cons*$imgAncho;
$imagen = imagecreatetruecolor($ancho,$alto);
ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
imagejpeg($imagen,"",75);
ImageDestroy($imagen);
?>
-----------------------------------------
-----------------------------------------
Para mostrar todas las imagenes que se encuentren en X directorio, use el diguiente archivo...galeria.php
<?php
// Funcion para extraer la extensión de un Archivo dado
function Extension($Archivo)
{
$Archivo=strtok($Archivo,"/");
while ($Archivo)
{
$archivo=$Archivo;
$Archivo=strtok("/");
}
$Archivo=strtok($archivo,".");
while ($Archivo)
{
$Ext=$Archivo;
$Archivo=strtok(".");
}
return strtolower($Ext);
}
// Verificar si se indico algun directorio... de lo contrario, utilizará el actual
if (isset($_POST["dir"])) { $Directorio = $_POST["dir"];} // Busca el parametro en el metodo POST
elseif (isset($_GET["dir"])) { $Directorio = $_GET["dir"];} // Busca el parametro en el metodo GET
else { $Directorio = "./";}; // Si no enviaron el parametro, se especifica
// el directorio actual
if ($Directorio == "") { $Directorio.= "./";}; // Asegura que el Directorio no esté en blanco
if (substr($Directorio,strlen($Directorio)-1,1) != "/") { $Directorio.= "/";}; // Asegura que el fin de la cadena
// sea el la diagonal
// Si el directorio indicado no existe, marca como Galeria no encontrada...
if (!is_dir("$Directorio")) {
print "Galeria no encontrada...";
die();
};
// Abre el directorio
$DirectorioAbierto = opendir("$Directorio");
// Rastrea archivo por archivo el directorio
while ($Archivo = readdir($DirectorioAbierto)) {
if (is_file("$Directorio$Archivo")) {
if (is_readable("$Directorio$Archivo")) {
$Ext = Extension($Archivo);
if ( $Ext=="gif" || ($Ext=="jpeg" or $Ext=="jpg") || $Ext=="png" )
{
$Imagen[] = "<IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'>";
};
};
};
};
// Cuenta el numero de imagenes existentes
$count = count($Imagen);
//if ($count > 1) { sort($Imagen); }; // Ordena las imagenes
// Despliega las imagenes
for ($i = 0; $count > $i; $i ++) {
print $Imagen[$i];
}
?>
----------------------------------------
----------------------------------------
El resultado es una serie de imagenes, de todos los archivos existentes en el directorio que le expecifiques, o en el raiz, si es que no le especificas alguno...
Tu puedes armar tu galeria como quieras, solo tienes que modificar la forma de desplegar las etiquetas <IMG ... que se almacenaron en el vector $Imagenes.. esto es, en las ultimas lineas que dicen:
// Despliega las imagenes
for ($i = 0; $count > $i; $i ++) {
print $Imagen[$i];
}
Alli, hechale cesos para que lo acomodes a tu gusto...
De igual forma, si quieres que la forma de mostrar las imagenes sea distinta, osea, que la lista $Imagenes solo te almacene el nombre del archivo imagen, cambiarias la linea 41 asi:
Originalmente dice:
$Imagen[] = "<IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'>";
Puedes cambiarla por:
$Imagen[] = "'miniimgs.php?ruta=$Archivo'";
O bien, si lo que deseas es que se ponga un link a la imagen que se muestra quedaría así:
$Imagen[] = "<A HREF=''miniimgs.php?ruta=$Archivo''><IMG SRC='miniimgs.php?ruta=$Archivo' border=0 Alt='Galeria de imagenes ($Archivo)'></A>";
Quizas explique de mas....
Quizas quieras mas soluciones, pero, para eso, piensale tantito.. ;)
Hasta pronto....
[email protected] (casi diario estoy OnLine, pero pocas veces leo mi correo, asi que mejor apuntame en tu lista del MSN... o si me mandas un email, quizas lo lea, pero, por loo regular solo vacio los correos sin leerlos...)
Felices teclasos....
