Foros del Web » Programando para Internet » PHP »

redimensionar imagen

Estas en el tema de redimensionar imagen en el foro de PHP en Foros del Web. Saludos, tengo la necesidad de modificar un archivo para poder formatear una imagen segun el tamaño de la misma imagen al subirla mediante un formulario. ...
  #1 (permalink)  
Antiguo 26/09/2010, 16:54
Avatar de JoeLitO  
Fecha de Ingreso: febrero-2003
Ubicación: Perú
Mensajes: 202
Antigüedad: 21 años, 2 meses
Puntos: 0
redimensionar imagen

Saludos, tengo la necesidad de modificar un archivo para poder formatear una imagen segun el tamaño de la misma imagen al subirla mediante un formulario. Agradeceria mucho que me ayuden porque no puedo hacerlo.

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> 
Y luego el archivo:

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(11000000) . "." $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";
}
?>
Este segundo archivo procesa la imagen que se ha subido desde el formulario, le cambia de nombre, verifica el peso y a la vez crea un thumbnail de la misma imagen y lo guarda en su respectiva carpeta.

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
  #2 (permalink)  
Antiguo 26/09/2010, 20:31
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: redimensionar imagen

Todo lo que necesitas verificar lo haces con las variables HTTP_POST_FILES por ahí incluso en google encuentras scripts que puedes adaptar a lo que necesitas.. no es muy complicado..

suerte! ^^
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 26/09/2010, 20:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: redimensionar imagen

Recomendación, no usar HTTP_POST_FILES, es obsoleto, en su lugar $_FILES. Lo que debes hacer es dos condiciones una para la altura y otra para el ancho, para que así detecte cual es el mayor y lo modifique de acuerdo al que mayor cantidad tiene, ancho o altura.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 26/09/2010, 21:32
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: redimensionar imagen

Muy cierto lo que te dice Abimaelrc, jojo la costumbre xD ya me habían dicho y ni así jajajaja

saludos =)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #5 (permalink)  
Antiguo 26/09/2010, 22:14
Avatar de JoeLitO  
Fecha de Ingreso: febrero-2003
Ubicación: Perú
Mensajes: 202
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: redimensionar imagen

ya encontre como verificar el tamaño del ancho de la imagen...

Código PHP:
<?
$destino 
'datos' ;

$archivo $_FILES['file']['tmp_name'];
       
list(
$width$height$type$attr) = getimagesize($archivo);


if(
$width<500 ) {

move_uploaded_file $_FILES 'file' ][ 'tmp_name' ], $destino '/' $_FILES 'file' ][ 'name' ]);

}

else echo(
"El archivo tiene el ancho superior al permitido el tamaño maxino es 500px.");

?>
pero... buaaahhhhhhhhh no se como aplicarlo en el archivo validacion-de-imagen.php

ayudenem por favor estoy deseperado

Etiquetas: redimensionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:00.