Hola, tengo un sistema para subir imagenes. Me gustarñia podes tener la eleccion de poder modificar los tamaños de las mismas... El tema es que no me anda mi script.
Este es el formulario
Código PHP:
<form action="prueba.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<span class="Estilo2"><strong>Nombre</strong> <span class="Estilo1">(Opcional)</span></span> <br />
<input name="nombre" type="text" id="archivo" class="file" style="width:150px"><br /><br />
<strong>Archivo</strong> <br />
<input name="archivo" type="file" id="archivo" class="file" style="width:150px"><br /><br />
<strong>Tamaño</strong> <br />
<br /><br />
<select name="nuevo_tamano">
<option value="1" selected="selected">Dejar tamaño original</option>
<option value="2">100x75 (Avatar)</option>
<option value="3">150x112 (Vista previa)</option>
<option value="4">250x250 (Vista previa)</option>
<option value="5" selected>450x450 (Para Foros, Blogs y Spaces!)</option>
<option value="6">640x480 (Para mensaje en foros)</option>
<option value="7">800x600 (monitor de 15")</option>
<option value="8">1024x768 (monitor de 17")</option>
<option value="9">1280x1024 (monitor de 19")</option>
</select>
<br /><br />
<input name="boton" id="boton" class="boton" type="submit" value="Subir Imagen!" />
</form>
Este es el proceso
Código PHP:
if(isset($_POST['boton'])){
$tipo = $_FILES['archivo']['type'];
$tamaño = $_FILES['archivo']['size'];
$nombre = $_POST['nombre'];
$nuevo_tamano = $_POST['nuevo_tamano'];
if($nuevo_tamano>1){
function redimensionar_imagen($imagen, $nombre_imagen_asociada)
{
//indicamos el directorio donde se van a colgar las imágenes
$directorio = ".";
//establecemos los límites de ancho y alto
if($nuevo_tamano==2){
$nuevo_ancho = 100 ;
$nuevo_alto = 75 ;
}
elseif($nuevo_tamano==3){
$nuevo_ancho = 150 ;
$nuevo_alto = 112 ;
}
elseif($nuevo_tamano==4){
$nuevo_ancho = 250 ;
$nuevo_alto = 250 ;
}
elseif($nuevo_tamano==5){
$nuevo_ancho = 450 ;
$nuevo_alto = 450 ;
}
elseif($nuevo_tamano==6){
$nuevo_ancho = 640 ;
$nuevo_alto = 480 ;
}
elseif($nuevo_tamano==7){
$nuevo_ancho = 800 ;
$nuevo_alto = 600 ;
}
elseif($nuevo_tamano==8){
$nuevo_ancho = 1024 ;
$nuevo_alto = 768 ;
}
else{
$nuevo_ancho = 1280 ;
$nuevo_alto = 1024 ;
}
//Recojo información de la imágen
$info_imagen = getimagesize($imagen);
$alto = $info_imagen[1];
$ancho = $info_imagen[0];
$tipo_imagen = $info_imagen[2];
// dependiendo del tipo de imagen tengo que usar diferentes funciones
switch ($tipo_imagen) {
case 1: //si es gif …
$imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromgif($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
case 2: //si es jpeg …
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromjpeg($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
case 3: //si es png …
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefrompng($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
}
return true; //si todo ha ido bien devuelve true
}
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
if($HTTP_POST_FILES['archivo']['size'] < 1000000) {
if($tipo=="image/gif" || $tipo=="image/jpeg" || $tipo=="image/png" || $tipo=="image/jpg" || $tipo=="image/pjpeg" || $tipo=="image/x-png") {
copy($_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
$usuario = $mostrar[username];
$info = pathinfo($HTTP_POST_FILES['archivo']['name']);
$aleatorio = substr(md5(uniqid(rand())),0,10).".".strtolower($info['extension']);
$imagen = $usuario."_".$aleatorio;
redimensionar_imagen($HTTP_POST_FILES['archivo']['name'], $imagen);
$dia = date ("d");
$mes = date ("m");
$ano = date ("Y");
$fecha = $dia."-".$mes."-".$ano;
$query = "INSERT INTO imagenes (username, nombre, imagen, fecha) VALUES('$usuario', '$nombre', '$imagen', '$fecha')";
mysql_query($query) or die(mysql_error());
$subio = true;
}
}
}
}else{
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
if($HTTP_POST_FILES['archivo']['size'] < 1000000) {
if($tipo=="image/gif" || $tipo=="image/jpeg" || $tipo=="image/png" || $tipo=="image/jpg" || $tipo=="image/pjpeg" || $tipo=="image/x-png") {
$usuario = $mostrar[username];
$info = pathinfo($_FILES['archivo']['name']);
$aleatorio = substr(md5(uniqid(rand())),0,10).".".strtolower($info['extension']);
$imagen = $usuario."_".$aleatorio;
copy($_FILES['archivo']['tmp_name'], $imagen);
$dia = date ("d");
$mes = date ("m");
$ano = date ("Y");
$fecha = $dia."-".$mes."-".$ano;
$query = "INSERT INTO imagenes (username, nombre, imagen, fecha) VALUES('$usuario', '$nombre', '$imagen', '$fecha')";
mysql_query($query) or die(mysql_error());
$subio = true;
}
}
}
}
if($subio) {
$ultimo = mysql_query("SELECT id,imagen FROM hostimage_imagenes WHERE imagen = '$imagen'") or die("Error: ".mysql_error());
$ver = mysql_fetch_array($ultimo);
echo $imagen;
} else {
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><img src="imagenes/error.jpg"></td>
<td width="*">El archivo no se pudo enviar. Recuerda que debe ser un archivo JPG, GIF o PNG y el tamaño no puede exceder 1MB</td>
</tr>
</table>';
}
}
Si yo elijo "no cambiar el tamaño" me la sube de 10, si elijo un tamaño me la sube sin cambiar nada... aparece en blanco y no me sube nada....