bmptoc.c
上传用户:qddsws
上传日期:2022-06-22
资源大小:723k
文件大小:1k
源码类别:

操作系统开发

开发平台:

C/C++

  1. #include <unistd.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #define byte unsigned char
  6. #define word unsigned short
  7. #define dword unsigned int
  8. struct BmpHeader {
  9. byte signature[2];
  10. byte size[4];
  11. byte reserved[2];
  12. byte reserved2[2];
  13. byte start_offset[4];
  14. byte bitmap_header_size[4];
  15. byte width[4];
  16. byte height[4];
  17. byte planes[2];
  18. byte bpp[2];
  19. byte compression[4];
  20. byte size_inclpad[4];
  21. byte hres[4];
  22. byte vres[4];
  23. byte ncolors[4];
  24. byte icolors[4];
  25. };
  26. int main (int argc, char *argv[]) {
  27. struct BmpHeader header;
  28. int width, height,start,bpp;
  29. printf ("static unsigned short logo_16bpp[] = { n");
  30. int in=open(argv[1],O_RDONLY);
  31. read(in,&header,sizeof(header));
  32. width=*(unsigned long*)header.width;
  33. height=*(unsigned long*)header.height;
  34. bpp=*(int*)header.bpp;
  35. bpp=bpp/8;
  36. start=*(unsigned long*)header.start_offset;
  37. unsigned long pixel;
  38. int i=0;
  39. printf ("%d,%d,",width,height);
  40. lseek (in,start,SEEK_SET);
  41. for (i=0;i<height*width*bpp;i=i+bpp) {
  42.  read(in,&pixel,bpp);
  43.  pixel=pixel&0x0000FFFF;
  44.  pixel=( ((0x7C00&pixel)<<1) | (0x3E0&pixel)<<1  | ((0x1F&pixel)));
  45.  printf ("0x%lx",(pixel&0x0000FFFF));
  46.  if (i!=height*width*bpp-2) printf (",");
  47.  if ((i+1)%15==0) printf ("n");
  48. }
  49. printf ("n};n");
  50. return 0;
  51. }