Un amigo me envio un script muy interesante que subia una imagen a una carpeta despues se copiaba ella misma y se rellamaba como "nombre_small", "nombre_medium" y "nombre_big", una vez echo esta la original se eliminaba automaticamente y se quedaban estas tres en la carpeta del servidor para poder trabajar mas rapidamente, asi dependiendo de donde estuvieramos de nuestra pagina web se mostraba una imagen pequeña, una mediana o una grande con la consiguiente mejora en la velocidad de descarga de la pagina ya que cada imagen ocupaba un tamaño.
El problema es que cuando estabamos en el trabajo el script funcionaba perfectamente, pero ahora los dos hemos cambiado de empresa y a mi no me funciona dicho script, y tampoco puedo localizar a mi amigo. Asi que os dejo bajo el script para ver si alguien ve la solucion. Hasta ahora sube la imagen original pero a la hora de llamar a la funcion que hace que se modifique el tamaño y se vuelva a copiar no funciona.
Código PHP:
<?
//funcion para copiar y minimizar foto
function copyimag($id,$prefijo,$ruta,$size){
//list toma los valores del array generado por getimage
list($width, $height, $value, $params) = getimagesize($ruta.$id."_ini.jpg");
//creo foto reducida
if($size<$height){
$new_width = intval(($size*$width)/$height);
$new_height = $size;
//limito si acho a 150 de alto es mayor a 200
if($new_width>200 and $size==150){
$new_width = 200;
}
//codigo para crear la nueva imagen
$newImage = imagecreatetruecolor($new_width, $new_height);
$cpyImage = imagecreatefromjpeg($ruta.$id."_ini.jpg");
imagecopyresized($newImage, $cpyImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($newImage,$ruta.$id."_".$prefijo.".jpg");
}else{
copy($ruta.$id."_ini.jpg",$ruta.$id."_".$prefijo.".jpg");
}
}
//Empezamos con el tratamiento de imagenes
//Empezamos la primera imagen
if($_FILES['nueva_imagen']['name']!=""){
//Dirección donde voy a subir
$folder="../imagenes/";
//
$archivo = $_FILES['nueva_imagen'];
$archivo_name=$_FILES['nueva_imagen']['name'];
$archivo_size=$_FILES['nueva_imagen']['size'];
$archivo_type=$_FILES['nueva_imagen']['type'];
$archivo_tmp=$_FILES['nueva_imagen']['tmp_name'];
//esto lo hago porque asi saco el nombre tal cual, sin extensiones
$long=strlen($archivo_name);
$archivo_name=substr($archivo_name, 0, $long-4);
//
move_uploaded_file($archivo_tmp,$folder.$archivo_name."_ini.jpg")or die("problemas uploading imagen");
////////////////////////////A partir de aqui es donde no funciona////////////////
//redimensiono si es muy grande
copyimag($archivo_name,"big",$folder,"440");
//mediana
copyimag($archivo_name,"medium",$folder,"150");
//pequeña
copyimag($archivo_name,"small",$folder,"47");
}
//Ahora eliminamos la imagen original
if (isset($archivo_name))
unlink("../imagenes/".$archivo_name."_ini.jpg");
?>
<form name="form1" method="post" action="<? echo $PHP_SELF; ?>" enctype="multipart/form-data">
<input type="file" name="nueva_imagen">
<input name="enviar" type="submit" value="enviar">
</form>