Aplicación de noticias

Paco
15 de Agosto del 2004
Saludos.
Estoy haciendo una aplicación de noticias, que está casi acabada pero el tema de las miniaturas me está volviendo loco, al principio probe con .gif... pero la función imagegif() que es la única para guardarlas al disco duro (pues quiero guardarlas a disco)... no funciona, asi que deje solo los jpeg... y hace las miniaturas pero a algunas fotos al subirlas les quita colores y deja como el negativo... este es el script... a ver si alguien me puede ayudar... ya no se que hacer...
<?
function redimensionar($anchura, $altura, $anchura_max, $altura_max)
{
$porcen= $anchura / $altura;
echo"<p>Anchura: ---$anchura--- Altura: ---$altura--- Porcentaje: ---$porcen---";
//Si la anchura es mayor que la altura... (si no es así dará cero coma algo...)
if($porcen > 1)
{
$anchura= $anchura_max;
$altura= $anchura / $porcen;
echo"<p>CALCULADA Anchura: ---$anchura--- Altura: ---$altura--- Porcentaje: ---$porcen---";
return round($altura);
}
//sino es porque la altura es mayor...
else
{
$altura= $altura_max;
$anchura= $altura * $porcen;
echo"<p>CALCULADA Anchura: ---$anchura--- Altura: ---$altura--- Porcentaje: ---$porcen---";
return round($anchura);
}
}

function crear_fotos($nombre_foto, $nombre_variable)
{
$ruta_foto= "./fotos/originales/".$nombre_foto;
$ruta_miniatura= "./fotos/miniaturas/".$nombre_foto;
$ancho_max= 139;
$alto_max= 139;
$calidad= 100;
//Ahora vamos a crear la miniatura de la foto 1 y a guardarla en su directorio "miniaturas"
@copy($nombre_variable, $ruta_foto)
or die("La Foto no se ha podido copiar en el servidor");
$tipo= exif_imagetype($nombre_variable);
//si es un jpg...
if($tipo == 2)
{
$fuente= @imagecreatefromjpeg($nombre_variable)
or die("No se ha podido crear la fuente jpeg");
$ancho_foto= imagesx($fuente);
$alto_foto= imagesy($fuente);
echo"Ancho: ---$ancho_foto--- Alto: ---$alto_foto--- Tipo: ---$tipo---";
if($ancho_foto == $alto_foto)
{
$ancho_mini= $ancho_max;
$alto_mini= $alto_max;
}
elseif($ancho_foto > $alto_foto)
{
$ancho_mini= $ancho_max;
$alto_mini= redimensionar($ancho_foto, $alto_foto, $ancho_max, $alto_max);
}
else
{
$alto_mini= $alto_max;
$ancho_mini= redimensionar($ancho_foto, $alto_foto, $ancho_max, $alto_max);
}
echo"ANCHO MINI: ---$ancho_mini--- ALTO: ---$alto_mini---";
//Ahora la creamos con las nuevas medidas y la guardamos a disco de una jodia vez...
$mini= @imagecreate($ancho_mini, $alto_mini)
or die("La miniatura en blanco no se ha podido crear");

@imagecopyresampled($mini, $fuente ,0,0,0,0, $ancho_mini, $alto_mini, $ancho_foto, $alto_foto)
or die("La redimensión no se ha podido realizar");
//el 75 es la calidad de la foto por defecto si no se pone ninguna y el
//rango puede ser entre 0 y 100 pero de 75 a 100 casi no varía la calidad
//sin embargo ocupa un tercio menos de tamaño en Kb...
//header("Content-type: image/jpeg");
if (imagejpeg($mini, $ruta_miniatura, $calidad))
{
return 1;
}
else
{
return 0;
}

}
}