PDA

Ver la Versión Completa : Escribir un Buffer en formato BMP a Disco


acalderonr
13-09-2011, 03:16:45
Hola a todos los programadores en Delphi,

Estoy explorando el funcionamiento de VeCAD para incluir edición vectorial de dibujos en mi aplicación. Todo va bien, genero dibujos y los puedo guardar sin problema, el detalle está en generar un BMP utilizando sus funciones.

Hay una función llamada CadExtractImage ( archivo, apuntador )
Para lo que debo reservar un espacio de 250,000 bytes en un apuntador para almacenar la imagen en formato BMP.

El apuntador pMem reserva el espacio sin problema, se le pasa el pMem a la función y regresa un entero de la cantidad de bytes escritos en el buffer reservado y ya, eso es todo. Técnicamente ya tengo en ese espacio mi archivo en formato BMP, pero ... ahora como lo guardo en disco??

Como se guarda en un archivo a partir de un apuntador y el espacio utilizado en memoria? alguien podrá orientarme?

Gracias.

escafandra
13-09-2011, 07:52:07
Ya que estamos en el foro API, contestaré con la API:


var
F: Cardinal;
begin
F:= CreateFile('file.bmp', GENERIC_WRITE, 0, nil, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, 0);
_lwrite(F, BUFFER, SIZEBUFFER);
_lclose(F);



Saludos.

LoPiTaL
13-09-2011, 08:24:32
Hola. Una opinión personal: a mí no me gusta nunca utilizar las funciones de IO de archivos directamente. Me parecen demasaido bajo nivel y a veces algo complicadas.
Me gusta más bien utilizar los streams para guardar / cargar de disco, por ejemplo con un TMemoryStream o con un TFileStream, y usando sus métodos WriteBuffer / ReadBuffer para escribir datos en ellos y SaveToFile / LoadFromFile para trabajar con los archivos.

Un saludo,
LoPiTaL

acalderonr
13-09-2011, 19:26:47
Gracias escafandra y LoPital, voy a hacer pruebas esta tarde.

Buen día.