Foros del Web » Programando para Internet » PHP »

Cambiar tamaño imagen automaticamente

Estas en el tema de Cambiar tamaño imagen automaticamente en el foro de PHP en Foros del Web. Hola, tengo un sistemita que estoy creando, donde subo una imagen. Si esta imagen tiene un ancho mas grande que 700 pixeles, pone el ancho ...
  #1 (permalink)  
Antiguo 05/04/2008, 20:30
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Cambiar tamaño imagen automaticamente

Hola, tengo un sistemita que estoy creando, donde subo una imagen. Si esta imagen tiene un ancho mas grande que 700 pixeles, pone el ancho en 700 y proporciona el alto.

Ejemplo: tamaño original de la imagen: 1000x500, la nueva toma como ancho 700 y el alto 350...

Pero me tira este error:

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in fotos_nueva.php on line 74

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in fotos_nueva.php on line 76

Warning: imagejpeg(): supplied argument is not a valid Image resource in fotos_nueva.php on line 78

Warning: imagedestroy(): supplied argument is not a valid Image resource in fotos_nueva.php on line 82


Este es la parte del script donde salta el error:

Código PHP:
$tipo $HTTP_POST_FILES['archivo']['type'];

function 
miniatura($nombre_imagen$nombre_miniatura){

$ancho_max 700;

$nombre basename($HTTP_POST_FILES['archivo']['tmp_name']);

$datos getimagesize($nombre);

$ancho $datos[0];
$alto $datos[1];

if(
$ancho $ancho_max){
$ancho_nuevo $ancho;
$alto_nuevo $alto;
}else{
$ancho_nuevo $ancho_max;
$alto2 $ancho_max $alto;
$alto_nuevo $alto2 $ancho;
}

if(
$GLOBALS['tipo']=="image/jpeg" || $GLOBALS['tipo']=="image/pjpeg") { $img imagecreatefromjpeg($nombre_imagen); }
if(
$GLOBALS['tipo']=="image/gif") { $img imagecreatefromgif($nombre_imagen); }
if(
$GLOBALS['tipo']=="image/png" || $GLOBALS['tipo']=="image/x-png") { $img imagecreatefrompng($nombre_imagen); }

$tmp_img imagecreatetruecolor($ancho_nuevo,$alto_nuevo);

imagecopyresampled($tmp_img$img0000$ancho_nuevo$alto_nuevo$datos[0], $datos[1]);

if(
$GLOBALS['tipo']=="image/jpeg" || $GLOBALS['tipo']=="image/pjpeg") { imagejpeg($tmp_img$nombre_miniatura); }
if(
$GLOBALS['tipo']=="image/gif") { imagegif($tmp_img$nombre_miniatura); }
if(
$GLOBALS['tipo']=="image/png" || $GLOBALS['tipo']=="image/x-png") { imagepng($tmp_img$nombre_miniatura); }

imagedestroy($tmp_img);
}

$foto $HTTP_POST_FILES['archivo']['name'];
$dir '../notas/';
$foto2 $dir.$foto;

miniatura($_FILES['archivo']['tmp_name'], $foto2); 


No se como resolverlo, espero ayuda. Gracias
  #2 (permalink)  
Antiguo 05/04/2008, 20:37
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: Cambiar tamaño imagen automaticamente

Mira creo que mejor es que uses la clase de OKRAM en su website te explica detalladamente como hacerlo.. créeme tiene mucho mas que re dimensionar imágenes.

http://www.phperu.net/phpimagen/
  #3 (permalink)  
Antiguo 05/04/2008, 21:05
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Re: Cambiar tamaño imagen automaticamente

gesking:
Esta parte la entiendo bien:
Imagen = 1000 x 500
if($ancho < $ancho_max){ 1000 < 700
$ancho_nuevo = $ancho;
$alto_nuevo = $alto;
}else{
$ancho_nuevo = $ancho_max; 700
$alto2 = $ancho_max * $alto; 700 x 500 = 350000
$alto_nuevo = $alto2 / $ancho; 350000 / 1000 = 350
}
todo parece estar bien:
Creo el error esta en uno de estos dos:
$nombre = basename($HTTP_POST_FILES['archivo']['tmp_name']);
$datos = getimagesize($nombre);

Para saber exactamente,
pon un>
echo "$ancho"; // y un (Debiera dar 1000
echo "$alto"; // debiera darte 500
Para ver si hasta este punto esta bien o esta mal.

Saludos
Franco
  #4 (permalink)  
Antiguo 06/04/2008, 10:11
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Cambiar tamaño imagen automaticamente

Gracias, ya implementé unos metodos y me funciona correctamente !!

Saludos
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 06:15.