Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Escribir un Buffer en formato BMP a Disco (https://www.clubdelphi.com/foros/showthread.php?t=75693)

acalderonr 13-09-2011 03:16:45

Escribir un Buffer en formato BMP a Disco
 
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:

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 16:26:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi