Foros del Web » Programando para Internet » PHP »

Manipular Archivo Bytea con PHP

Estas en el tema de Manipular Archivo Bytea con PHP en el foro de PHP en Foros del Web. Buenas, lo que intento es tomar un bytea desde base de datos, el cual es una imagen, y obtener sus medidas (width y height). ¿Alguién ...
  #1 (permalink)  
Antiguo 27/09/2012, 12:44
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Manipular Archivo Bytea con PHP

Buenas,

lo que intento es tomar un bytea desde base de datos, el cual es una imagen, y obtener sus medidas (width y height).

¿Alguién me podría decir si esto es posible?
He buscado en el manual alguna función que me pueda ayudar, pero ninguna parece estar ayudandome a cumplir mi objetivo.

Muchas gracias de antemano.
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #2 (permalink)  
Antiguo 27/09/2012, 12:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

Definitivamente debes convertir dichos bytes a un archivo procesable, o bien, leer los bytes exactos que contienen esos datos.

Es posible que te sirva getimagesizefromstring()
http://php.net/manual/en/function.ge...fromstring.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/09/2012, 13:38
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Respuesta: Manipular Archivo Bytea con PHP

Estoy utilizandolo de la siguiente manera y no me esta devolviendo nada.

Código PHP:
Ver original
  1. $size = getimagesizefromstring (pg_unescape_bytea($row_can->log_gra_can));

También probé así

Código PHP:
Ver original
  1. $size = getimagesizefromstring ($row_can->log_gra_can);

Esta devolviendo data correctamente desde base de datos, puesto que la imagen se imprime. Sin embargo no estoy obteniendo las medidas.

Por cierto, muchas gracias por la ayuda!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #4 (permalink)  
Antiguo 27/09/2012, 13:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

¿Y cómo sabes que no obtienes nada?

Yo sólo veo que asignas el resultado de la función a una variable, pero ¿que contiene $size?

Vaya, si quieres que adivinemos está complicado.
Código PHP:
var_dump($size); 
¿Que muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 27/09/2012, 14:03
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Respuesta: Manipular Archivo Bytea con PHP

$size lo declaro null en primera instancia. Luego se corre el script que trae la imagen desde BD y la imprime, simultáneamente en dicho script, ejecuto getimagesizefromstring() y guardo el valor que devuelve en $size.

$size se guarda en una variable de sesión y en otro archivo imprimo $size con un var_dump().

El resultado devuelto es null.
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #6 (permalink)  
Antiguo 27/09/2012, 14:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

A ver, evitate el baile de las sesiones y aprende a resolver un problema a la vez.

En un único script realiza el proceso de asignar dicho resultado de getimagesizefromstring() en una variable y depurar la variable con var_dump().

Definitivamente no puede simplemente dar NULL sin error alguno, debes usar el sentido común.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/09/2012, 14:25
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Respuesta: Manipular Archivo Bytea con PHP

Vamos a ver si me puedo explicar y me entiendes el contexto en el que estoy...

Estoy trayendo un logo desde BD del siguiente modo

Código PHP:
Ver original
  1. <img class="pointer logo" id="logo" src="<?php print APP_WEB_ROOT."imagen.php?id_emp=".$id_emp;?>" />

imagen.php

Código PHP:
Ver original
  1. // Recupera el id pasado como parametro
  2.     $id=isset($_REQUEST['id_emp'])?$_REQUEST['id_emp']:0;
  3.    
  4.     include_once('includes/path_definitions.php');
  5.     include_once(APP_SRC_ROOT_PATH.'includes/included_in_all.php');
  6.        
  7.     $ConnPG = new pgdb();
  8.     $ConnPG->Connect();
  9.     $size = null;
  10.    
  11.     // Recupera el archivo en base al ID
  12.     $sql_emp = "SELECT  coalesce(logo_emp,'-1') AS logo_emp,
  13.                         CASE WHEN logo_emp IS NULL THEN FALSE
  14.                         ELSE TRUE END AS estado  
  15.                 FROM general.empresas
  16.                 WHERE id_emp=$id";
  17.  
  18.     $ConnPG->Query($sql_emp);
  19.     $row_emp = $ConnPG->Fobject();
  20.     if ($row_emp->estado == 't')
  21.     {
  22.         // Hace el proceso inverso a pg_escape_bytea, para que el archivo est� en su estado original
  23.         $file=pg_unescape_bytea($row_emp->logo_emp);
  24.         $size = getimagesizefromstring (pg_unescape_bytea($row_emp->logo_emp));
  25.     }
  26.     else
  27.     {
  28.         $sql_can = "SELECT  coalesce(log_gra_can,'-1') as log_gra_can,
  29.                             CASE WHEN log_gra_can IS NULL THEN FALSE
  30.                             ELSE TRUE END AS estado  
  31.                     FROM general.canales
  32.                     LEFT JOIN general.empresas USING (id_can)
  33.                     WHERE id_emp=$id";
  34.                    
  35.         $ConnPG->Query($sql_can);
  36.         $row_can = $ConnPG->Fobject();
  37.         // Hace el proceso inverso a pg_escape_bytea, para que el archivo est� en su estado original
  38.         $file=pg_unescape_bytea($row_can->log_gra_can);
  39.         $size = getimagesizefromstring (pg_unescape_bytea($row_can->log_gra_can));
  40.        
  41.     }
  42.     //Asigno lo que deberían de ser las medidas de la imagen, a una variable de sesión.
  43.     $sess->setData("test4", $size);
  44.    
  45.     // Envio de cabeceras
  46.     header("Content-type: image/jpeg");
  47.     header("Pragma: no-cache");
  48.  
  49.     print $file;

listar.php (donde imprimo el valor de la var de sesión).

Código PHP:
Ver original
  1. $test3 = $sess->getData("imgSize");
  2. var_dump($test3);
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #8 (permalink)  
Antiguo 27/09/2012, 14:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

Pues en un lado guardas la sesión como test4, y la intentas recuperar como imgSize.

No me extraña que te de NULL.

PDTA: en hora buena por expandir la información, sin contexto es de verdad imposible comprender lo que sucede.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 27/09/2012, 14:44
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Respuesta: Manipular Archivo Bytea con PHP

No no!

Eso fue un error de tipeo...

En ambos archivos se llama imgSize.
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #10 (permalink)  
Antiguo 27/09/2012, 14:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

Pues te sugiero que antes de imprimir la imagen y asignar la sesión depures el contenido de $size, de otra forma el baile de las sesiones va a seguir nublando tu camino.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 27/09/2012, 14:56
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Exclamación Respuesta: Manipular Archivo Bytea con PHP

Si tienes razón...

Antes de todo eso lo imprimo y esto es lo q devuelve:

Fatal error: Call to undefined function getimagesizefromstring() in /home/hpartidas/public_html/WAP/gtrmax_wap_backup/src/www/imagen.php on line 37
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #12 (permalink)  
Antiguo 27/09/2012, 14:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

Bingo!

Revisa el manual de GD, seguramente no tienes la versión correcta o ni siquiera tienes instalada dicha extensión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 27/09/2012, 15:03
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Respuesta: Manipular Archivo Bytea con PHP

Buen punto...

Chequeo y cualquier cosa vuelvo...

Muchas gracias Pateke!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #14 (permalink)  
Antiguo 27/09/2012, 15:17
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Exclamación Respuesta: Manipular Archivo Bytea con PHP

RESUELTO!

Cambié el procedimiento. Y en vez de meterme en el archivo. Salí a donde se imprime la imagen, y de allí tomé los valores.

Código PHP:
Ver original
  1. <?php
  2. $size = getimagesize(APP_WEB_ROOT."imagen.php?id_emp=".$id_emp);
  3. var_dump($size);
  4. ?>
  5. <img class="pointer logo" id="logo" src="<?php print APP_WEB_ROOT."imagen.php?id_emp=".$id_emp;?>" />

y devuelve correctamente los valores. Muchas gracias por la ayuda Patty!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #15 (permalink)  
Antiguo 27/09/2012, 15:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Manipular Archivo Bytea con PHP

No diría que es el mejor camino, pero si funciona está bien.

PDTA: cuidado con los nicks...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 23:38.