Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/09/2009, 04:24
Cheroc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Duda con código PHP

Muchas gracias por las respuestas, os adjunto el codigo a ver si os ayuda a ver algo:

<?

//Libreria para general las imagenes en miniatura. Se podrán generar imagenes .GIF, siempre y cuando, tengamos
// instalada la libreria GD versión 2.0.29 o superior.

function file_type($nombre) {
// Función que devuelve el tipo de la imagen en función del nombre de la misma.

$lastpoint=strrpos($nombre,'.');
$extension=strtolower(substr($nombre,$lastpoint+1) );

$tipoImagen = '';
switch ($extension) {
case 'jpe':
case 'jpeg':
case 'jpg':
$tipoImagen = 'jpeg';
break;
case 'gif':
$tipoImagen = 'gif';
break;
case 'png':
$tipoImagen = 'png';
break;
}

return $tipoImagen;
}

function createThumb($imagen,$dirThumbs,$AnchuraMaxima,$Alt uraMaxima) {
// La variable imagen contendrá la ruta física completa de la imagen.

$pathImagen =$imagen;

//comprobamos si existe la imagen inicial, si no existe, salimos
if (!file_exists($pathImagen)) {
return(false);
}

//Obtención de la extensión del fichero

if ($dirThumbs)
$dir_thumb = $dirThumbs;

else
$dir_thumb='thumbs/';


$nombre=basename($pathImagen); // Aquí tendremos el nombre de la imagen.
$camino=dirname($pathImagen)."/";// Aquí la ruta especificada para buscar la imagen.

$tipoImagen = file_type($nombre); //Aqui obtengo el tipo de la imagen

// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb)) {
if (!mkdir($camino.$dir_thumb, 0777))
return(false); //die("No se ha podido crear el directorio ".$camino.$dir_thumb);
}

$fileFinalThumb = $camino.$dir_thumb.$nombre; // Fichero final donde irá el thumb
$relativeThumb = dirname($imagen).'/'.$dir_thumb.$nombre; //url de acceso a la imagen
/*echo $relativeThumb."<br>";
echo $camino.$nombre."<br>";
echo $fileThumb."<br>";*/

// Aquí comprobamos si el thumbnail que queremos crear no existe previamente.
if (@file_exists($fileFinalThumb)) {
// echo "existe: $fileFinalThumb<br>";
$fechaModImg = filemtime($pathImagen);
$fechaModThumb = filemtime($fileFinalThumb);

//Si la fecha de creación del thumb es mayor que la de la imagen, entonces no regenero el thumb.
if ($fechaModImg < $fechaModThumb) {
return($relativeThumb);
}
}

$imageCreateFuntion = 'imagecreatefrom'.$tipoImagen;
if (!$img = $imageCreateFuntion($pathImagen))
return(false); //or die("No se encuentra la imagen $camino$nombre<br>\n");

//******** calculamos ancho y alto en funcion de los limites que tenemos
// miramos el tamaño de la imagen original...
if (!$AnchoAlto=getimagesize($pathImagen)) {
return(false); //die("Problemas con $camino$nombre al obtener el tamaño<br>\n");
} else {
if (($AnchoAlto[0] > $AnchuraMaxima) || ($AnchoAlto[1] > $AlturaMaxima)){
$cabe = 0;
} else{
$cabe = 1;
}
}

$anchura=$AnchoAlto[0];
$altura=$AnchoAlto[1];

if ($cabe==0) {
//si el alto recalculado es mayor que el maximo, se recalcula el ancho
$ratio = ($AnchuraMaxima /$AnchoAlto[0]);
$altura = intval($ratio*$AnchoAlto[1]);
$anchura = $AnchuraMaxima;
if ($altura>$AlturaMaxima){
$ratio = ($AlturaMaxima /$AnchoAlto[1]);
$altura = $AlturaMaxima;
$anchura = intval($ratio*$AnchoAlto[0]);
}
}
//********

// esta será la nueva imagen reescalada
// if (function_exists('imagecreatetruecolor')) {
$thumb = imagecreatetruecolor($anchura,$altura);
/*} else {
$thumb = imagecreate($anchura,$altura);
} */

// con esta función la reescalamos
imagecopyresized($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $AnchoAlto[0], $AnchoAlto[1]);

// voilà la salvamos con el nombre y en el lugar que nos interesa.
$imageFuntion = 'image'.$tipoImagen;
$imageFuntion($thumb,$fileFinalThumb);

return($relativeThumb);
}
?>