線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:838
推到 Plurk!
推到 Facebook!

請問這兩種方式讀RAW檔有什麼不一樣?

尚未結案
adamjr
一般會員


發表:4
回覆:5
積分:1
註冊:2004-09-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-13 16:40:34 IP:140.123.xxx.xxx 未訂閱
我用兩種方式讀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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-10 22:05:44 IP:218.160.xxx.xxx 未訂閱
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.
系統時間:2024-11-23 9:30:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!