Buenos días lista,

No se si este será el foro adecuado para este problema...

He creado una tabla de imágenes de productos tal que,

CREATE TABLE productos_imagenes
(
  id int4 NOT NULL DEFAULT nextval('"productos_imagenes_seq"'::text),
  id_producto int4 NOT NULL DEFAULT 0,
  imagen bytea,
  CONSTRAINT productos_imagenes_pkey PRIMARY KEY (id)
) WITH OIDS;

En el campo "imagen" deseo almacenar BMPs no muy grandes (20Kb máx).

Estoy desarrollando la plataforma en Visual C++ 6.0. Creo el recordset con el campo como CByteArray y almaceno las imágenes con el siguiente código

CRSProductosImagenes rs;
rs.Open();
rs.AddNew();
rs.m_id_producto=1;
CFile f;
f.Open("C:\\producto_1.bmp",CFile::modeRead);
rs.m_imagen.SetSize(f.GetLength());
f.Read(rs.m_imagen.GetData(),f.GetLength());
f.Close();
rs.Update();
rs.Close();

Hasta aquí "parece" que va todo bien, desde luego almacena un registro...

Recupero la imágen para almacenarla (copiarla) en otro BMP distinto de la siguiente forma

CRSProductosImagenes rs;
rs.m_strSort="id_producto";
rs.m_strFilter="id_producto=1";
rs.Open();
rs.MoveFirst();
CFile fNew;
fNew.Open("C:\\producto_1_copy.bmp",CFile::modeCreate | CFile::modeWrite);
fNew.Write(rs.m_imagen.GetData(),rs.m_imagen.GetSize());
fNew.Close();
rs.Close();

Parece que no da errores pero el problema es que el nuevo BMP "producto_1_copy.bmp" no es ni siquiera un BMP.

Alguien sabe cómo almacenar / recuperar correctamente una imagen en PostgreSQL a través de C++.

Muchas gracias de antemano

Luis


-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a