Hola a todos, soy nuevo en el foro. Estoy intentando hacer un conversor de formato de imágenes bmp de 12 bits a 24 bits por pixel. Sin embargo se me han presentado ciertos problemas, creía hasta cierto momento tener todo el programa, de hecho corre, pero la función de convertir12a24(Imagen * imgOrigen) no me esta haciendo lo correcto. Se que esta es la función que esta mal. Les pido el favor me ayuden. En serio llevo tratandolo de hacer hace horas y no me he iluminado. El programa compila en Visual C++, no se si tengan problemas los de Dev. Esta es la función que se que esta mal, no se si sean los corrimientos no se que es. Gracias por su atención
// Esta función se encarga de convertir una estructura imagen en formato de 12 bits (formato de origen) a una estructura de 24 bits (formato de destino).
// imgOrigen es el apuntador a la imagen (originalmente en formato de 12 bits)
// Se debe tener en cuenta la convención de representación explicada en el enunciado del proyecto.
// Cada pixel debe escalarse, para que al pasarlo de 12 a 24 bits conserve la proporción de los colores.
void convertir12a24(Imagen * imgOrigen)
{
unsigned char temp1 [MAX_ANCHO];
unsigned char temp2 [MAX_ANCHO];
int i = 0;
int j = 0;
int e = 0;
int c = 0;
unsigned char a;
unsigned char b;
unsigned char ab;
int an = 0;
int al = 0;
an = imgOrigen->ancho;
al = imgOrigen->alto;
for(i = 0; i < MAX_ALTO; i++){
for( j= 0 ; j < MAX_ANCHO; j++){
a = imgOrigen->pixel[i][j];
b = imgOrigen->pixel[i][j];
a = a >> 4;
ab= a >> 4;
a = a || ab;
temp1 [j] = a;
a = imgOrigen->pixel[i][j];
a = a << 4;
ab= a >> 4;
a = a || ab;
temp2 [j] = a ;
}
for(e = 0; e < MAX_ANCHO/2 ; e++) {
imgOrigen->pixel[i][e] = temp1 [e];
imgOrigen->pixel[i][e+1] = temp2 [e];
}
}
}