bmp.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1.2MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2010-04-15 23:56
    上传日期
本程序主要通过读灰度8位图片,将其DATA数据域输出成为XML文件
bmp.rar
  • bmp
  • Debug
  • cbmp.exe
    180KB
  • vc60.pdb
    76KB
  • cbmp.pch
    3.4MB
  • cbmp.ilk
    189.1KB
  • cbmp.obj
    17.2KB
  • vc60.idb
    137KB
  • cbmp.pdb
    369KB
  • cbmp.plg
    740B
  • lena.bmp
    65.1KB
  • lena_clone_C.bmp
    0B
  • cbmp.opt
    47.5KB
  • cbmp.ncb
    33KB
  • cbmp.cpp
    4KB
  • pic.xml
    392KB
  • cbmp.dsw
    531B
  • cbmp.dsp
    3.3KB
内容介绍
// C語言 / BmpReadWriteC.c /* (C) OOMusou 2007 http://oomusou.cnblogs.com Filename : BmpReadWriteC.c Compiler : Visual C++ 8.0 / ANSI C Description : Demo the how to read and write bmp by standard library Release : 02/03/2007 1.0 */ #include <stdio.h> #include <stdlib.h> #include <windows.h> //#include "iostream" //using namespace std; #define BUFSIZE 1 // 2009-10-301 FILE *fp; char string[BUFSIZE]; // 2009-10-30 end char fname_bmp[128]; unsigned char header[54]; unsigned char mydat[512][512]; long offset; unsigned char *image; const char *filename="lena_clone_C"; LPBYTE RgbToGray(LPBYTE lpDibBuf) { LPBITMAPINFOHEADER lpRgbInfo=(LPBITMAPINFOHEADER)lpDibBuf; if (lpRgbInfo->biBitCount!=24) return NULL; LPBYTE lpRgbBits=lpDibBuf+sizeof(BITMAPINFOHEADER); DWORD dwBitsSize=((lpRgbInfo->biWidth+3)&~3)*lpRgbInfo->biHeight; DWORD dwBufSize=sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+dwBitsSize; LPBYTE lpGrayBuf=new BYTE[dwBufSize]; memset(lpGrayBuf, 0, dwBufSize); LPBITMAPINFOHEADER lpGrayInfo=(LPBITMAPINFOHEADER)lpGrayBuf; LPRGBQUAD lpPalette=(LPRGBQUAD)lpGrayBuf+sizeof(BITMAPINFOHEADER); LPBYTE lpGrayBits=lpGrayBuf+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD); memcpy(lpGrayInfo, lpRgbInfo, sizeof(BITMAPINFOHEADER)); lpGrayInfo->biBitCount=8; lpGrayInfo->biSizeImage=dwBitsSize; for (int i=0; i<256; i++, lpPalette++) { lpPalette->rgbBlue=i; lpPalette->rgbGreen=i; lpPalette->rgbRed=i; } for (DWORD j=0; j<dwBitsSize; j++) lpGrayBits[j]=(lpRgbBits[j*3]*117+lpRgbBits[j*3+1]*601+lpRgbBits[j*3+2]*306)>>10; return lpGrayBuf; } void ReleaseGrayBuffer(LPBYTE lpGrayBuf) { delete[] lpGrayBuf; } int bmp_read(unsigned char *image, int xsize, int ysize, const char *filename) { char fname_bmp[128]; FILE *fp, *fp1; unsigned char header[54]; int i, j; sprintf(fname_bmp, "%s.bmp", filename); if (!(fp = fopen(fname_bmp, "rb"))) return -1; fread(header, sizeof(unsigned char), 54, fp); offset=header[10] + (8<<header[11]) + (16<<header[12]) + (24<<header[13]); //fread(image, sizeof(unsigned char), (size_t)(long)xsize * ysize * 3, fp); fseek(fp, 1024, SEEK_CUR); fp1 = fopen("pic.xml", "w"); for ( i=0; i<xsize; i++) for(j=0; j<ysize; j++) { fread(&mydat[i][j], 1, 1, fp); // 每次只读取一个1字节,存入数组 sprintf(string, " %3.0f.", (float)mydat[i][j]); fprintf(fp1, "%s", string); if(j%16==0) fprintf(fp1, "\n"); } // fread(image, sizeof(unsigned char), (size_t)(long)xsize * ysize, fp); fclose(fp1); for(i = 0 ; i<=54; i++) printf(" %d ",header[i]); fclose(fp); return 0; } int main() { int xsize = 256; int ysize = 256; int m, n; unsigned char p; unsigned char header[54] = { 0x42, 0x4d, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; long file_size = (long)xsize * (long)ysize + 54; long width, height; image = (unsigned char *)malloc((size_t)xsize * ysize * 3); header[2] = (unsigned char)(file_size &0x000000ff); header[3] = (file_size >> 8) & 0x000000ff; header[4] = (file_size >> 16) & 0x000000ff; header[5] = (file_size >> 24) & 0x000000ff; width = xsize; header[18] = width & 0x000000ff; header[19] = (width >> 8) &0x000000ff; header[20] = (width >> 16) &0x000000ff; header[21] = (width >> 24) &0x000000ff; height = ysize; header[22] = height &0x000000ff; header[23] = (height >> 8) &0x000000ff; header[24] = (height >> 16) &0x000000ff; header[25] = (height >> 24) &0x000000ff; sprintf(fname_bmp, "%s.bmp", filename); if (!(fp = fopen(fname_bmp, "wb"))) return -1; bmp_read(image, xsize, ysize, "lena"); free(image); return 0; }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...