Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2011, 13:51
javy
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 8 meses
Puntos: 1
Problema solucionado que acarrea otro: redimensionar imágenes

Hola a todos.

Comencé un post para saber sobre el tema de subir imágenes y redimensionarlas.

Ya conseguí lo siguiente:

- desde una página se sube la imagen con un formulario ("formulario.php").

- desde otra página, la redimensiono ("redimensionar.php").

Hasta aquí bién salvo dos cosillas:

- ¿cómo puedo hacer para que desde "formulario.php", cuando se suba la imagen, en vez de mostrar el típico aviso de "Registro completado" (por ejemplo), me abra directamente "redimensionar.php"?

- Y la segunda cosilla: en "redimensionar.php" tengo para que coja la id de "formulario.php" y el siguiente código para que me redimensione la imagen. El problema está en que, cuando abro "redimensionar.php" no modifica la imagen directamente, sino que si se recarga la página si lo hace... alguna solución?

<?php
//CONECTANDO CON LA BASE DE DATOS
require_once("../incluye/config.php");
require_once("../incluye/funciones.php");
//CONECTAR A LA BASE DE DATOS
$cnx = conectar ();

$sql = "SELECT * FROM fotos WHERE fotosid=".$_GET['fotosid'];
$res= mysql_query($sql) or die (mysql_error());

if( mysql_num_rows($res) >0){
while ($fila = mysql_fetch_array($res)) {

$tipoimagen = GetImageSize($fila[imgfotos]);

//Cargo en memoria la imagen que quiero redimensionar
if($tipoimagen[2]==1){$imagen_original = @imagecreatefromgif($fila[imgfotos]);}
if($tipoimagen[2]==2){$imagen_original = @imagecreatefromjpeg($fila[imgfotos]);}
if($tipoimagen[2]==3){$imagen_original = @imagecreatefrompng($fila[imgfotos]);}

//Obtengo el ancho de la imagen quecargue
$ancho_original = imagesx($imagen_original);

//Obtengo el alto de la imagen que cargue
$alto_original = imagesy($imagen_original);

//SI QUEREMOS UN ANCHO FINAL FIJO, calculamos el ALTO de forma proporcionada
$ancho_final = 150;

//Ancho final en pixeles
$alto_final = ($ancho_final / $ancho_original) * $alto_original;

//SI CONOCEMOS UN ALTO FINAL FIJO, calculamos el ANCHO de forma proporcionada

//Para usar este caso, comentar las dos lineas anteriores, y descomentar las dos siguientes a este comentario

/*$alto_final = 250; //Alto final en pixeles
$ancho_final = ($alto_final / $alto_original) * $ancho_original;*/

//Creo una imagen vacia, con el alto y el ancho que tendrá la imagen redimensionada
$imagen_redimensionada = imagecreatetruecolor($ancho_final, $alto_final);

//Copio la imagen original con las nuevas dimensiones a la imagen en blanco que creamos en la linea anterior
imagecopyresampled($imagen_redimensionada, $imagen_original, 0, 0, 0, 0, $ancho_final, $alto_final, $ancho_original, $alto_original);

//Guardo la imagen ya redimensionada


if($tipoimagen[2]==1){imagegif($imagen_redimensionada, $fila[imgfotos]);}
if($tipoimagen[2]==2){imagejpeg($imagen_redimensionada, $fila[imgfotos]);}
if($tipoimagen[2]==3){imagepng($imagen_redimensionada, $fila[imgfotos]); }

//Libero recursos, destruyendo las imágenes que estaban en memoria
imagedestroy($imagen_original);

imagedestroy($imagen_redimensionada);

}
}else{
echo "<tr>
<td class='texto_paginas'>No se obtuvieron resultados</td>
</tr>\n";
}
mysql_close($cnx);
?>

Gracias por vuestra paciencia y un saludo:

Javy