[問題] MFC讀raw檔
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC6
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
餵入的資料(Input):
276x235的raw檔
http://pic.eslite.com/Upload/MediaEvent/2011/5337/129693407553275000.jpg

用photoshop將連結中的影像轉成.raw檔
程式碼(Code):(請善用置底文網頁, 記得排版)
用VC++6建立一個Single Document
在 CRAWReaderView 的class中宣告
CStdioFile RawFile;
unsigned char RawBuf[276][235][3];
並且在下面的位置加入程式碼
void CRAWReaderView::OnDraw(CDC* pDC)
{
CRAWReaderDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString FilePath;
FilePath.Format("276x3x235.raw");
if (!RawFile.Open(FilePath, CFile::modeRead | CFile::typeBinary))
AfxMessageBox("檔案開啟失敗");
for (int pY = 0; pY<235 ; ++pY)
for (int pX = 0; pX<276 ; ++pX)
for (int k = 0; k<3 ; ++k)
RawBuf[pY][pX][k] = 0;
if (!RawFile.Read(RawBuf, 276*235*3))
AfxMessageBox("讀檔失敗");
RawFile.Close();
for (pY = 0; pY < 235 ; ++pY)
for (pX = 0; pX < 276 + pY * 41 ; ++pX)
pDC->SetPixelV((pX - pY * 41), pY, RGB(RawBuf[pY][pX][0],
RawBuf[pY][pX][1], RawBuf[pY][pX][2]));
}
補充說明(Supplement):
輸出第一行(pY = 0)pX是正確的值(一個值為RGB(R, G, B))
輸出第二行(pY = 1)pX會重覆上一行,最後41個值
依此類推!
多出這41個值,亂詭異的,所以上來問問看是什麼原因。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.98.237
→
01/20 19:08, , 1F
01/20 19:08, 1F
→
01/20 23:43, , 2F
01/20 23:43, 2F
→
01/20 23:45, , 3F
01/20 23:45, 3F
→
01/20 23:47, , 4F
01/20 23:47, 4F
推
01/21 00:05, , 5F
01/21 00:05, 5F
→
01/21 15:31, , 6F
01/21 15:31, 6F