文档详情

C++读取设置图片RGB.doc

发布:2017-12-18约5.3千字共6页下载文档
文本预览下载声明
CFile myfile; ? ? ? ? myfile.Open(filename,CFile::modeRead|CFile::typeBinary); ? ? ? ? char buff[GetLength+1] = {0}; ? ? ? ? myfile.Read(buff,myfile.GetLength()); ?? ? ? ?send(socket,buff,myfile.GetLength(),0); ? 读取RGB void ReadBitMap( CString strFileName , int x , int y ) { CFile file; if(!file.Open(strFileName,CFile::modeRead|CFile::typeBinary)) { return; } BITMAPFILEHEADER BitmapHead; if(file.Read(BitmapHead,sizeof(BITMAPFILEHEADER))!=sizeof(BITMAPFILEHEADER)) { return; } if(BitmapHead.bfType!=0x4d42) { return; } BITMAPINFOHEADER BitmapInfo; if(file.Read(BitmapInfo,sizeof(BITMAPINFOHEADER))!=sizeof(BITMAPINFOHEADER)) { return; } if(BitmapInfo.biBitCount!=24) { return; } DWORD dataByte=BitmapHead.bfSize-BitmapHead.bfOffBits; unsigned char* pic_buf = (BYTE*)new char[dataByte]; BITMAPINFO* pic_pbmi = (BITMAPINFO*)new char[sizeof(BITMAPINFO)]; memcpy(pic_pbmi,BitmapInfo,sizeof(BITMAPINFOHEADER)); int pic_rowSize = WidthBytes(pic_pbmi-bmiHeader.biWidth*24); if(file.Read(pic_buf ,dataByte)!=dataByte) { return; } file.Close(); delete pic_buf; } pic_buf里存储的就是r,g,b值,buf[0] 是r,buf[1]是g,buf[2]是b的,这是第一个点的像素,下来buf[3] buf[4] buf[5]是第二个的,以此类推。 ?网上代码很多啊 C/C++ code ?? ?CFile cf; ?? ?if(!cf.Open(pathname,CFile::modeRead)) ?? ? ? ?return false; ?? ?DWORD bitfilesize=cf.GetLength()-sizeof(BITMAPFILEHEADER);/////bitfilesize为除去文件头剩余文件的大小 ?? ?unsigned char* pbitfile=new unsigned char[bitfilesize]; ? ?//////pbitfile指向了文件信息头的位置 ? ? ?? ?if(!pbitfile) ? ? ? ? ? ? ? ? ? ? ? ? ? ?////如果内存申请失败,就返回 ?? ? ? ?return false; ?? ?BITMAPFILEHEADER bfh; ?? ?if(cf.Read(bfh,sizeof(BITMAPFILEHEADER))!=sizeof(BITMAPFILEHEADER) ?//文件头读取 ?? ? ? ?/*||bfh.bfType!=BM*/||(cf.Read(pbitfile,bitfilesize)!=bitfilesize)){//判断文件格式,和读取文件内容 ?? ? ? ? ? ?::MessageBox(NULL,_T(ERROR),NULL,MB_OKCANCEL); ?? ? ? ? ? ?delete []pbitfile; ? ? ? ///读取失败,就删除申请的内存 ?? ? ? ? ? ?return 0; ?? ?} ?? ?if(m_pbmp!=NULL) ? ?/////防止多次载入图片,而导致内存的泄露 ?? ? ? ?delete m_pbmp; ?? ?if(m_palette.GetSafeHandle ()!=NULL) ?/////同上 ?? ? ? ?m_palette.Del
显示全部
相似文档