Foros del Web » Programando para Internet » PHP »

WinNT vs GetImageSize???

Estas en el tema de WinNT vs GetImageSize??? en el foro de PHP en Foros del Web. Hola a todos, ya estuve buscando pero no encontré posts similares... Resulta que hago un: Código PHP: $miFoto  =  'http://algo.com/img.php?=' . $row_loquesea [ 'id' ]; ...
  #1 (permalink)  
Antiguo 16/10/2003, 16:28
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Pregunta WinNT vs GetImageSize???

Hola a todos, ya estuve buscando pero no encontré posts similares...

Resulta que hago un:

Código PHP:
$miFoto 'http://algo.com/img.php?='.$row_loquesea['id'];
$size GetImageSize($miFoto); 
Para luego multiplicar $size[0] y $size[1] * 0.5 y que mis imágenes se escalen a la mitad.

Resulta igual que ya lo probé en localhost y en un server Apache y funcionó a todo dar.

Y resulta que al final se colgó en un server WinNT con IIS y ahora me arroja este error:

Warning: getimagesize(http://algo.com/img.php?id=33): failed to open stream: HTTP request failed! HTTP/1.1 401 Acceso denegado in c:\inetpub\wwwroot\php\prod.inc.php on line 66

Si quito todo lo referente a getimagesize, trabaja bien, pero necesito que las fotos se escalen y esta función tampoco trabaja para capturar el tamaño de la imagen al subirla a la DB. La idea es no tener que llenar unos campos a mano con el tamaño de cada foto, ni tampoco subir un thumbnail por cada foto.

Otra cosa que es importante saber, que el cliente quizo que se hicieran pruebas en su server de correos internos y no en el server que le da salida a su site.

Por esta razón cuando visito su página usando la IP (no tiene nombre de dominio) me pide un nombre de usuario y contraseña, y tengo la sospecha de que esta función getimagesize no está trabajando por cuestión de permisos, pero como no la he probado nunca en IIS, igual y es cosa del IIS que no se lleva muy bien con PHP.

Por último, todas las imágenes que jalo dinámicamente funcionan, menos las que intenta abrir el getimagesize. Siempre me arroja el mismo error en la línea donde está dicha función.

Si alguien sabe que onda se los agradeceré infinitamente porque es bien urgente.

Espero haberme explicado con suficiente claridad.

Saludos y mil gracias de antemano.
  #2 (permalink)  
Antiguo 17/10/2003, 12:45
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
En serio, ¿Nadie sabe?

Seguí haciendo pruebas, y si uso la función GetImageSize con un archivo gif o jpg en vez de tomar la imagen de la DB con img.php?id=X, sí funciona, al menos ya se que no es la función la que está fallando, sino algo con el mySQL.

Lo curioso es que puedo ver las imágenes sin problemas usando img.php?id=X siempre que no le pase antes el GetImageSIze, así que mySQL funciona, GetImageSize, igual, pero juntos, no más no...

Si alguien sabe algo al respecto, apreciaría mucho aunque sea sus palabras de aliento :(

De antemano, gracias.
  #3 (permalink)  
Antiguo 17/10/2003, 14:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La mayoría de veces no es que no "sepa nadie" de tu problema .. Lo que pasa es que NO se aclara bien las condiciones de tus pruebas ..

En tu segundo mensaje dices que la imagen la tienes en tu BD .. pero ¿como? .. que guardas ahí .. ? La imagen en formato binario o sólo el "link" hacia donde está tu imagen en tu sistema de archivos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 18/10/2003, 07:57
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Hola Cluster, disculpa, es que estoy siendo víctima de la desesperación :P

La imagen la guardo en binario en una DB, y la recupero con un archivo PHP en el que reconstruyo dicha imagen.

El problema en concreto es que aunque las imágenes que recupero de la DB funcionan bien, y aunque el GetImageSize funciona bien cuando se lo aplico a una imagen normal (es decir, no extraida de una DB), cuando hago algo como:

Código PHP:
GetImageSize('http://algo.com/img.php?id='.$id); 
...me marca el siguiente error:

Warning: getimagesize(http://algo.com/img.php?id=33): failed to open stream: HTTP request failed! HTTP/1.1 401 Acceso denegado in c:\inetpub\wwwroot\php\prod.inc.php on line 66

Investigando un poco, medio pude deducir que el "FAILED TO OPEN STREAM" se refiere a cosas de permisos.

Lo que quiero saber es si puedo decirle a mi cliente "es asunto tuyo y de tu servidor" y lavarme las manos, o si es algo que esté haciendo mal yo, para que lo arregle.

Saludos y muchas gracias
  #5 (permalink)  
Antiguo 18/10/2003, 11:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si te fijas en la documentación de esa función veras que los parámetros que acepta son "un nombre de archivo" ... pero que esté FISICAMENTE en el sistema de archivos .. NO un dato binario que lo entregas directamente al navegador con las cabeceras HTTP apropiadas (de content-type .. etc ..)

Para obtener el tamaño de tu imagen que guardas en un campo BLOD (binario) .. debes de volver a hacer el proceso que usas para leer tu imagen y presentarla, pero .. en lugar de mandar las cabeceras HTTP .. destruyes la imagen y aplicas al $img ("resource de la imagen" que obtiens de aplicar tu imagecreate ...) las funciones:

imagesx() e imgagesy()

Ahí obtendrás tu alto/ancho.

----

Para evitarte problemas y "calculo" (proceso) inecesario, Lo ideal es que a la hora de subir tu imagen a tu BD en binario .. te guardes el tamaño alto y ancho de la imagen en un par de campos extra de tu tabla de imagenes (e incluso más información sobre la imagen que puedes obtener). Si estás leyendo imagenes de tu sistema de archivos para guardarlas en tu BD .. puedes aplicar en ese momento (sólo en ese momento .. al "insertar" en tu BD . no al leer) tu función getimagesize() .. y si estás subiendo imagenes por HTTP .. también lo puedes hacer en ese instante, pues la imagen sube a un directorio (temporal) donde PHP guarda esas imagenes en espera que las muevas a otro directorio o las leas para guardarlas en tu campo BLOD de tu tabla (BD) ...

En este mensaje tienes parte de lo mencionado (por lo menos como obtener más datos de tu archivo binario que almacenas en tu tabla) .. El resto es aplicar getimagesize() en ese instante.

Sería aproximadamente en la variable:
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

http://www.forosdelweb.com/showthrea...hreadid=127775

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/10/2003, 15:37
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Gracias Cluster

De hecho cuando lo pruebo sobre Apache+PHP+mySQL funciona sin problemas, pero tienes razón, es más fácil y en términos de procesos más eficaz que mida el tamaño desde que capturo la imagen y lo ponga en un par de rows.

No conozco las funciones imagecreate(), imagex() ni imagey(), voy a investigar en php.net. Espero que no necesiten librerías aparte porque no tengo acceso al server :P

Mil gracias, un saludo
  #7 (permalink)  
Antiguo 18/10/2003, 20:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues imagecreate...() al menos necesita de las librerías GD (cualquier versión 1.x o 2.x) ..

Por eso, si capturas esos datos en el instante que sube la imagen a tu BD podrías usar getimagesize() sin problemas y sin necesidad de las extensiones GD en tu servidor ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/10/2003, 07:09
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Mil Gracias!!! Eso fue la solución del problema, funcionó muy bien.

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 07:45.