Hola a tod@s

Tengo un problema al leer imágenes desde la base de datos en php.
OS: Centos 7
Postgresql: 9.6
PHP: 5.4.16

Antes usaba oid y esas cosas en postgresql 7 @ del año 2003, pero ahora
tengo la necesidad de guardar imágenes en la base de datos en postgresql
9.6.
Esta es mi tabla.
                Tabla «public.personal»
    Columna    |          Tipo          | Modificadores
---------------+------------------------+---------------
 id            | integer                | not null
 nombre        | character varying(255) |
 horario       | character varying(200) |
 puesto        | character varying(255) |
 ingreso       | date                   |
 departamento  | character varying(255) |
 clasificacion | character varying(255) |
 tarjeta       | character varying(50)  |
 foto          | bytea                  |
Índices:
    "pk_orbis" PRIMARY KEY, btree (id)
    "tarjeta_unica" UNIQUE CONSTRAINT, btree (tarjeta)
Referenciada por:
    TABLE "acceso" CONSTRAINT "fk_tarjeta_personal" FOREIGN KEY (tarjeta)
REFERENCES personal(tarjeta) ON UPDATE CASCADE ON DELETE RESTRICT

Las imágenes las guardo en un bytea
y las puedo obtener como sigue
\copy (select encode(foto, 'hex') from personal where id = 193) to
'/home/nahum/Escritorio/imagen.hex';
y luego
xxd -p -r imagen.hex > imagen.jpg
desde bash
La imágen se ve bien.

Pero el siguiente código no funciona.
<?php
  // Conectar a la base de datos
  $dbconn = pg_connect("host=localhost port=5432 dbname=personal user=nahum
password=xxxx");

  // Obtener los datos
$res = pg_query("SELECT foto FROM personal WHERE id=193;");
$row = pg_fetch_row($res);

 // Convertir a binario?
$image = pg_unescape_bytea($row[0]);
header("Content-type: image/jpeg");
echo $image;
pg_close($dbconn);
?>

El problema es que no obtengo ninguna imágen, solo: "No se puede mostrar la
imágen por que contiene errores"
¿Se puede emular xdd -p -r en postgres o en php?

Saludos y gracias.
Nahum.

-- 
*Nahum Castro González*
Blvd. Perdigón 214, Brisas del Lago.
CP 37207
León, Guanajuato, México
Tel (477)1950304
Cel (477)1274694

Responder a