Foros del Web » Programando para Internet » PHP »

Obtener medidas de una imagen antes de aceptarla

Estas en el tema de Obtener medidas de una imagen antes de aceptarla en el foro de PHP en Foros del Web. Hola, querria saber las medidas de una imagen que me pasan mediante un formulario, para comprobar que sean de un tamaño predefinido, y si lo ...
  #1 (permalink)  
Antiguo 26/11/2006, 17:38
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Obtener medidas de una imagen antes de aceptarla

Hola, querria saber las medidas de una imagen que me pasan mediante un formulario, para comprobar que sean de un tamaño predefinido, y si lo son, entonces las subo al servidor.

la imagen la envian al script php mediante un formulario, y en el script obtengo los datos:


Código PHP:
   $mapa $HTTP_POST_FILES['mapa']['name'];
      
$foto $HTTP_POST_FILES['foto']['name']; 
      
$tamaño_mapa $HTTP_POST_FILES['mapa']['size'];
...
... 
Como podria obtener el alto y el ancho de la foto para decidir si se sube o no al servidor?

He probado la funcion $info = getimagesize("ruta/archivo.ext"); pero no me funciona, por lo que he leido, sirve cuando ya tienes la imagen dentro de un directorio... aunque nose.

Gracias
  #2 (permalink)  
Antiguo 29/11/2006, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero .. cuando tu subes tu imagen la tienes en:
$HTTP_POST_FILES['mapa']['tmp_name'];

hasta que tu veas si la mueves a su destino definitivo (con move_uploaded_file()) así que podrías usar la función mencionada con dicha ruta:

Código PHP:
$info=getimagesize($_FILES['mapa']['tmp_name']) ; 
De hecho .. deberías usar $_FILES en lugar de $HTTP_POST_FILES. Si así tienes problemas de acceso al archivo "temporal" tendrás que hacer ese proceso cuando muevas tu archivo subido a su destino definitivo, en la ruta donde la dejes finalmente.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 30/11/2006, 14:48
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Warning: imagesx(): supplied argument is not a valid Image resource in C:\wamp\www\upload_map.php on line 783

Warning: imagesy(): supplied argument is not a valid Image resource in C:\wamp\www\upload_map.php on line 784


Esto es por que no tengo bien instalado algun paquete o algo?? :S
  #4 (permalink)  
Antiguo 30/11/2006, 15:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por AbdelioR Ver Mensaje
Warning: imagesx(): supplied argument is not a valid Image resource in C:\wamp\www\upload_map.php on line 783

Warning: imagesy(): supplied argument is not a valid Image resource in C:\wamp\www\upload_map.php on line 784


Esto es por que no tengo bien instalado algun paquete o algo?? :S
Las funciones que propones son parte de las librerías GD .. justamenten no te informan de problemas de instalación de las extensiones GD en tu servidor, pero si de un uso incorrecto.

Deberías indicar el código que usas para ver tu fallo ..

De todas formas lee la documentación oficial de PHP al respecto, esas funciones requieren un "recurso de imagen" y eso se lo dás con un paso prévio, aplicar cierta función tipo:
imagecreatefromXXX() según sea el típo de imagen ...

www.php.net/imagesx

Por qué no usas la otra alternativa?:
getimagesize()

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/11/2006, 16:26
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Estoy usando esa ya :S

Tengo un formulario en el que el usuario añade una foto, y mediante un script, la subo al servidor. Antes de subirla hago esto:

$info=getimagesize($_FILES['mapa']['tmp_name']);
$original_w = imagesx($info);
$original_h = imagesy($info);

y hago dos "echo".

Es ahi cuando me lanza el error.
  #6 (permalink)  
Antiguo 30/11/2006, 16:35
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
Intenta con
Código PHP:
                  $info=getimagesize($_FILES['mapa']['filename']); 
         
$original_w imagesx($info);
         
$original_h imagesy($info); 
  #7 (permalink)  
Antiguo 18/12/2006, 14:09
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: Obtener medidas de una imagen antes de aceptarla

Que va, sigue lanzando el mismo error.
El script es este:

Código PHP:


if($_GET['do'] == 'send')
{
.
.
.


             
$info getimagesize($_FILES['bandera']['filename']); 
       
         
$anchura imagesx($info);
             
$altura imagesy($info);  

             if(
$extension != "bmp"){
            echo 
"Tu imagen no es .bmp";
        }
        else
        {
            if(
$anchura != "20" || $altura != "17")
            {
                echo 
"Tu imagen no es de las medidas adecuadas";
            }
            else
            {

                               if (
move_uploaded_file($HTTP_POST_FILES['bandera']['tmp_name'], "banderas/".$bandera)){


... 


El error que me lanza es:


Warning: imagesx(): supplied argument is not a valid Image resource in C:\wamp\www\upload_bandera.php on line 773

Warning: imagesy(): supplied argument is not a valid Image resource in C:\wamp\www\upload_bandera.php on line 774
Tu imagen no es .bmp

El de antes :S
  #8 (permalink)  
Antiguo 18/12/2006, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Re: Obtener medidas de una imagen antes de aceptarla

Srs.

Esto no es correcto:

$info = getimagesize($_FILES['bandera']['filename']);

$anchura = imagesx($info);
$altura = imagesy($info);

lo que las funciones tipo imagesX o Y requieren es un "resource de imagen" generado por imagecreatefromXXX() funciones ..

La función getimagesize() de por sí ya entrega esa información (alto/ancho) en un array:

http://www.php.net/getimagesize

Cita:
User Contributed Notes
getimagesize
jlratwil at yahoo dot com
08-Nov-2006 10:10
Data types of the output array for getimagesize().

[0] = The width of the image. It is integer data type.
[1] = The height of the image. It is an integer data type.
[2] = Image Type Flag. It is an integer data type.
[3] = String for <img> tag (width="xxx" height="xxx"). It is a string data type.
[bits] = Number of bits. It is an integer data type.
[channels] = Number of channels. It is an integer data type.
[mime] = MIME type. It is a string data type.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 18/12/2006, 15:42
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: Obtener medidas de una imagen antes de aceptarla

Si hago $_FILES['bandera']['name']; me reconoce bien el nombre del archivo, pero si hago $_FILES['bandera']['filename']; no me coje ningun valor :S


Código PHP:
 $Info getimagesize($_FILES['bandera']['filename']);

         
$anchura  $Info[0];
         
$altura      $Info[1]; 
Esto me toma valores en blanco, pero si pruebo a cambiar

$_FILES['bandera']['filename'] por $_FILES['bandera']['name']

entonces me salta error.

Donde la estoy liando?? :S En teoria con el nombre del archivo me tendria que coger bien las medidas en la posicion 0 y 1 no?
  #10 (permalink)  
Antiguo 19/12/2006, 08:22
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: Obtener medidas de una imagen antes de aceptarla

Problema resuelto, el codigo es el mismo pero usando


$Info = getimagesize($_FILES['bandera']['tmp_name']);

en vez de

$Info = getimagesize($_FILES['bandera']['filename']);
  #11 (permalink)  
Antiguo 19/12/2006, 08:24
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: Obtener medidas de una imagen antes de aceptarla

Problema resuelto, el codigo es el mismo pero usando


$Info = getimagesize($_FILES['bandera']['tmp_name']);

en vez de

$Info = getimagesize($_FILES['bandera']['filename']);


Muchas gracias por la ayuda una vez mas.
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 22:42.