Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Construir paleta de 256 niveles de gris ?????

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Construir paleta de 256 niveles de gris ????? Responder citando

Estoy iniciandome en C++ Builder y estoy realizando una aplicacion que trabaja con imagenes en formato BMP, y necesito
que utilizen una paleta de 256 niveles de gris, como lo puedo hacer?

Gracias por adelantado

Volver arriba
Mensaje    Asunto: Construir paleta de 256 niveles de gris ????? Responder citando

Una posible solución es utilizat bitmaps con PixelFormat=pf24bit

Para representar un nivel de gris pon el mismo valor en las tres componentes R G y B.

El siguiente trozo de codigo lee los valores desde un fichero y los asigna a una imagen llamada Bitmap que ya existe

-----------------

FILE *f_in;

f_in=fopen(NombreImagen.c_str(),"rb");
if (f_in==NULL)
{
ShowMessage("Error en la apertura del fichero");
return false;
}

puntos=new char[3*lcolumnas];

unsigned char *linea;

for (i=0;i<lfilas;i++)
{

fread((void *)puntos,3,lcolumnas,f_in);
linea=(unsigned char *) Bitmap->ScanLine[i];
for (j=0;j<lcolumnas;j++)
{
linea[3*j]=puntos[3*j+1];
linea[3*j+1]=puntos[3*j];
linea[3*j+2]=puntos[3*j+2];
}
}
fclose(f_in);

------

Saludos
Joan

Volver arriba
Mensaje    Asunto: Construir paleta de 256 niveles de gris ????? Responder citando

Hola otra vez

en el mensaje anterior hay un error, el codigo:

-----

fread((void *)puntos,3,lcolumnas,f_in);
linea=(unsigned char *) Bitmap->ScanLine[i];
for (j=0;j<lcolumnas;j++)
{
linea[3*j]=puntos[3*j+1];
linea[3*j+1]=puntos[3*j];
linea[3*j+2]=puntos[3*j+2];
}

----

tiene que ser:


----------

fread((void *)puntos,1,lcolumnas,f_in);
linea=(unsigned char *) Bitmap->ScanLine[i];
for (j=0;j<lcolumnas;j++)
{
linea[3*j]=puntos[j];
linea[3*j+1]=puntos[j];
linea[3*j+2]=puntos[j];
}
--------


Saludos
Joan

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.