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