請問這兩種方式讀RAW檔有什麼不一樣? |
尚未結案
|
adamjr
一般會員 發表:4 回覆:5 積分:1 註冊:2004-09-03 發送簡訊給我 |
我用兩種方式讀RAW檔
一種是在這版上看到的方法
TMemoryStream* ima=new TMemoryStream(); ima->LoadFromFile(OpenDialog1->FileName); int dwSize=ima->Size; Edit1->Text = IntToStr(dwSize); BYTE* pixel=new BYTE[dwSize]; ima->Read(pixel, dwSize);另一種方式則是用getc()的方式 int pixel1[390][261] FILE *fp1, *fp2; if (SelectDirectory("資料夾位址設定", "D:\\course\\projest\\", Dir)) { FileListBox1->ApplyFilePath(Dir); } i = 1; FileListBox1->ItemIndex = i; FileListBox1->Selected[FileListBox1->ItemIndex] = true; fp1=fopen(FileListBox1->FileName.c_str(),"rb"); for (int i=0;i<390;i ) { for (int j=0;j<261;j ) { pixel1[i][j] = getc(fp1); } } fclose(fp1);但是我把這兩種方式讀到的值,用到資料檔上來看 卻有一點點不一樣 請問為何會這樣??? |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
1.看看你的raw檔大小是不是390*261bytes或390*261*4bytes
一個是byte為單位,一個int為單位.
ima->Read(pixel, dwSize);
int pixel1[390][261];//由此可知你應該是要用int為單位.
假如你的檔案大小為390*261bytes,你就必須修正為 BYTE pixel1[390][261]; 2. 但是你另一個方式
pixel1[i][j] = getc(fp1); //你是用byte為單位,因getc()只能讀一個byte.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |