Tengo el siguiente archivo:
subir-imagen.php
Código HTML:
<form action="validacion-de-imagen.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"><br /> <input type="hidden" name="user" value="<?php echo $_SESSION['username']; ?>"><br /><br /> Nombre de imagen:<br /> <input type="text" name="heading"><br /><br /> Descripcion:<br /> <textarea rows="7" cols="30" name="description"></textarea><br /><br /> <input type="submit" name="upload" value=" Subir Imagen "> </form>
validacion-de-imagen.php [Que es el que valida el formulario]
Código PHP:
<?php
if($_SESSION['ok'] != "ok"){
echo 'Usted no puede hacer esto!';
}else{
if(isset($login_ok)) {
require "includes/db-connect.php";
//Get variables
$user = $_POST['user'];
$title = $_POST['heading'];
$description = $_POST['description'];
//Revisando errores
$errors = array();
if($title == '' || $description == '')
{
$errors[] = "Usted no ha llenado el campo obligatorio";
}
//Comprobando el tamaño del archivo
$file_size = $_FILES['file']['size'];
if($file_size > 102400)
{
$errors[] = "El archivo es demasiado grande";
}
if(count($errors) > 0)
{
foreach($errors AS $error)
{
echo'
<script type="text/javascript">
alert("'.$error.'");
window.location="subir-imagen.php"
</script>
';
}
} else {
//Moviendo el archivo
$from = $_FILES['file']['tmp_name'];
//Obtener tipo de archivo
$ext = strtolower(end(explode(".", $_FILES['file']['name'])));
//Comprobando si el archivo esta en formato jpg, jpeg o png
if($ext == "jpg" || $ext == "jpeg" || $ext == "png")
{
$time = time();
//Renombrando el archivo
$newName = $time . "_" . rand(1, 1000000) . "." . $ext;
//Destino del archivo
$dest = "images/" . $newName;
//Moviendo el archivo
move_uploaded_file($from, $dest);
//Creaando thumbnail
//Obtener la función thumbnail
require "includes/function_thumbnail.php";
createthumb('images/' . $newName,'images/thumbnails/tn_'.$newName,150,150);
//Agregando datos del archivo a la base de datos
$query = "INSERT INTO pictures (picture, tid, picture_user, title, description) VALUES ('$newName', '$time', '$user', '$title', '$description')";
mysql_query($query);
//Regresando a la pagina principal
echo '<meta http-equiv="refresh" content="5; url=index.php" />';
echo 'Gracias por subir su archivo.';
echo '<br /><br />';
echo 'Será redireccionado en 05 segundos...';
} else {
echo '<p>Ha ocurrido un error<br />reintentelo haciendo clic <a href="subir-imagen.php">aqui</a></p>';
}
}
} else {
echo '<p>Tienes que ingresar a tu cuenta para subir un archivo</p>';
}
$_SESSION['ok'] = "notok";
}
?>
Hasta ahi todo bien, pero hay un detalle, cuando alguien sube uma imagen, digamos con 1000px de ancho, igual la procesa correctamente, pero al mostrarla en la web (de manera automatica) la web se desconfigura es decir, se poner de mas 1000 px debido al ancho de la imagen.
Lo que necesto hacer con la imagen (a traves del archivo de verificacion) es que al momento de empezar a procesar la imagen (verificar peso, cambiar de nombre, crear thumbnail y guardar en sus respectivas carpetas), verifique que si el ancho es superior a 500px, lo cambie como a 500px con un alto automatico y si el archivo es menor a 500px, lo deje asi nomas o sea que no le cambie el ancho y que continue con el proceso (verificar peso, cambiar de nombre, crear thumbnail y guardar en sus respectivas carpetas).
Por favor podrian ayudarme, estoy dandole vueltas varios dias y no lobro hacerlo, ya estoy al borde de la locura porque tengo que cambiar el ancho (y alto) manualmente y esta situacion me tiene loco.
Saludos y muchas gracias,
Joel