Hola, soy nuevo en esto de la programación y estoy intentando hacer un programa que convierta una imagen bmp de 1 bit, a los colores rojo y azul, aqui abajo pongo el código de lo que llevo, segun yo ya debería estar funcionando pero no copia a la imagen destino, ojala me pudieran orientar. (y disculpen tantos comentarios
es que lo he intentado de muchas formas
desde ya, muchas gracias
es que lo he intentado de muchas formas Código (c) [Seleccionar]
#include<stdio.h>
#include<fcntl.h>
#include<math.h>
main(int argc,char *argv[])
{
int da,y,da2,data,x,biBitCount;
//double biBitCount;
char z[2],buffer[256];
unsigned char r,g,b,Q,gris;
unsigned char paleta[4];
da2=open(argv[2], O_RDONLY|O_TRUNC|O_CREAT,0666);
da=open(argv[1],O_RDONLY);
y=read(da,&z,2);
printf("el tipo de archivo es: %s\n",z);
write(da2,&z,y);printf("y: %i\n",y);
y=read(da,&data,4); printf("El tamanio del archivo es: %i\n",data);
write(da2,&data,y);/*data=0*/;printf("y: %i\n",y);
y=read(da,&data,2);printf("EL bfReserved1 es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,2);printf("EL bfReserved2 es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("El bfOffbits: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL bfSize es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL ancho de la imagen es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL largo de la imagen es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,2);printf("EL Numero de planos es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,2);printf("EL biBitCount numero de bytes por pixel es: %i\n",data);
biBitCount=data;
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL tipo de compresion es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("la resolucion horizontal en pixeles por metro: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("La resolucion vertical en pixeles por metro: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("El tamaño de la imagen bytes: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL Numero de colores indexado es: %i\n",data);
write(da2,&data,y);//data=0;
y=read(da,&data,4);printf("EL Numero de colores importantes: %i\n",data);
write(da2,&data,y);//data=0;
if (biBitCount==1)
{
printf(" r\t g\t b\t Q\n");
for(x=0;x<pow(2,biBitCount);x++)
{
read(da,paleta,4);
printf("%i\t %i\t %i\t %i\n",paleta[0],paleta[1],paleta[2],paleta[3]);
/*read (da,&r,1);
read(da,&g,1);
read(da,&b,1);
read(da,&Q,1);
printf("%c,%c,%c,%c",r,g,b,Q);*/
if (x==0)
{paleta[0]=255;write (da2,&paleta,1);
paleta[1]=0;write (da2,&paleta,1);
paleta[2]=0;write (da2,&paleta,1);
paleta[3]=0;write (da2,&paleta,1);}
if(x==1)
{paleta[0]=0;write(da2,&paleta,1);
paleta[1]=0;write(da2,&paleta,1);
paleta[2]=255;write(da2,&paleta,1);
paleta[3]=0;write(da2,&paleta,1);}
}
}
/*while((y=read(da,buffer,sizeof(buffer)))!=0)
{
write(da2,buffer,y);
}*/
for (x=0;x<3718;x++)
{
y=read(da,&data,1);
write(da2,&data,y);
}
/* if (biBitCount==4&biBitCount==8)
{
gris=(0.299)*r+(0.587)g+(0.114)*b);
}*/
}desde ya, muchas gracias