C/Visual C - Problema conceptual con BMP?!?!

 
Vista:

Problema conceptual con BMP?!?!

Publicado por Javier (8 intervenciones) el 19/07/2005 15:39:17
Hola a todos...

Estoy intentando crear un miniprocesador de imagenes BMP... pero tengo varios problemas...

Soy capaz de crear una copia de la imagen mediante el codigo siguiente:

----------------------------------------------------------------------------------------------------------------------------
// Leemos los encabezamientos
fread(&EncabezadoImagen,sizeof(EncabezadoImagen), 1, PunteroImagenInicial);
fread(&InformacionEncabezadoImagen,sizeof(InformacionEncabezadoImagen), 1, PunteroImagenInicial);

//Guardamos la anchura y altura de la imagen
altura = InformacionEncabezadoImagen.biHeight;
anchura= InformacionEncabezadoImagen.biWidth;

unsigned char *Rojo=new unsigned char[altura*anchura];
unsigned char *Verde=new unsigned char[altura*anchura];
unsigned char *Azul=new unsigned char[altura*anchura];

// Leemos la Imagen Inicial
for(int i=0 ; i<(altura * anchura) ; ++i) {
Azul[i]=fgetc(PunteroImagenInicial);
Verde[i]=fgetc(PunteroImagenInicial);
Rojo[i]=fgetc(PunteroImagenInicial);
}
----------------------------------------------------------------------------------------------------------------------------

y copio la imagen mediante otro bucle en otras variables... y creo otro fichero, inserto los datos y obtengo la copia... pero mi problema viene en lo siguiente...

Si yo quiero copiar simplemente la mitad de la imagen o quiero pintar una linea del archivo de un color determinado NO PUEDO!!!!!! Y no entiendo por qué no.... en función de los indices que ponga no pinto nada, pinto toda la foto o nada de nada... y yo creo que tengo todos los datos bien, que simplemente tendría que modificar los vectores y ya está... ¿no es asi? Por ejemplo... intento copiar la mitad de la imagen y la otra mitad pintarla de negro... utilizando el siguiente código:

---------------------------------------------------------------------------------------------------------------------------
for(int o=0; o<anchura; o++){
for( int u=0;u<altura/2;u++){
Rojo4[u*anchura + o]=Rojo[u*anchura + o];
Verde4[u*anchura + o]=Verde[u*anchura + o];
Azul4[u*anchura + o]=Azul[u*anchura + o];
}
for( int u=altura/2;u<altura;u++){
Rojo4[u*anchura + o]=0;
Verde4[u*anchura + o]=0;
Azul4[u*anchura + o]=0;
}
}

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


¿Alguien me puede ayudar?

Muchas gracias

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder