archivo procesar.php:
Código PHP:
//en primer lugar la funcion redimensionar
{
function redimensionar($type, $img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
$defecto = 'imagenes/defecto.jpg';
if(file_exists($img_original)) {
// crear imagen desde original
$type=strtolower($type);
switch($type)
{
case 'jpeg': $img = ImageCreateFromJPEG($img_original); break;
case 'jpg': $img = ImageCreateFromJPEG($img_original); break;
case 'png': $img = ImageCreateFromPNG($img_original); breaK;
case 'gif': $img = ImageCreateFromGIF($img_original); breaK;
case 'wbmp': $img = ImageCreateFromWBMP($img_original); break;
default: $img = ImageCreateFromJPEG($defecto); break;
}
} else {
$img = ImageCreateFromJPEG($defecto);
}
if(!empty($img)) {
$new_w_R = ImageSX($img);
$new_h_R = ImageSY($img);
//$img_nueva_altura = 50;
// se calcula la relación alto/ancho
$aspect_ratio = $new_h_R/$new_w_R;
$aspect_ratio2 = $new_w_R/$new_h_R;
if ($new_w_R >= $new_h_R){
// se ajusta al nuevo tamaño
$img_nueva_altura = abs($img_nueva_anchura * $aspect_ratio);
}
else{$img_nueva_anchura = abs($img_nueva_altura * $aspect_ratio2);}
// crear imagen nueva
$thumb = ImageCreateTrueColor($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen. La imagen se reajustará al nuevo tamaño
ImageCopyResampled($thumb,$img,0,0,0,0,$img_nueva_anchura,
$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indica $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
}
}
//a continuación subimos los archivos
$tot = count($_FILES["archivo"]["name"]);
for ($i = 0; $i < $tot; $i++)
{
//inseción de imagen
$fileSize = $_FILES['archivo']['size'][$i];
$fileType = $_FILES['archivo']['type'][$i];
$local = $_FILES['archivo']['name'][$i];
$remoto = $_FILES['archivo']['tmp_name'][$i];
$prefijo = substr(md5(uniqid(rand())),0,6);
$uploaddir = "imagenes/";
$max=1500000; //tamaño máximo permitido
if($filesize < $max){
ini_set("memory_limit","32M");
$uploadfile = $uploaddir.$prefijo."_".$_FILES['archivo']['name'][$i]; //archivo original
if (move_uploaded_file($remoto, $uploadfile)) {
chmod($uploadfile, 0644);
//redimensionar
$source=$uploadfile; // archivo de origen
$dest2 = $uploaddir."/".$prefijo."_".$local;//archivo grande
redimensionar("jpg",$source,$dest2,50,50,95); //redimensionamos el archivo original a 50x50, archivo jpg o jpeg
}}}}
Código PHP:
echo "<form action=\"procesar.php/" . reemplazo($datos["tituloart"]) . "\" ENCTYPE=multipart/form-data method=\"POST\">";
echo "Imagen<br><input type=\"file\" name=\"archivo[]\" class=\"caja\">
echo "Imagen<br><input type="file\" name=\"archivo[]\" class=\"caja\">
<br>";
si el archivo a subir es jpg o jpeg, los sube y los redimensiona; pero si es gif o png, no los redimensiona. los sube pero no los redimensiona y además da un error:
Código PHP:
imagecreatefromjpeg() [function.imagecreatefromjpeg]: imagenlaquesea.png is not a valid JPEG file
he probado poniendo la función redimensionar para png o gif:
redimensionar("png",$source,$dest2,50,50,95); //redimensionamos el archivo original a 50x50, archivo png
redimensionar("gif",$source,$dest2,50,50,95); //redimensionamos el archivo original a 50x50, archivo gif
pero nada. sigue dando el mismo error, aunque las imágenes las sube, ni las redimensiona y da ese error.
que me falta en el código?