VC++檔案處理筆記,使用讀取圖片
這邊是在MS Visual C++ MFC的環境下進行檔案操作,這邊使用的是C++的fstream,網路上有完整的參考資料可以看。這邊我的目的是要以二進位的方式讀取一張圖片,將圖片用程式傳送到別的地方,fstream剛好可以做到我的需求「完整讀取一張圖片的資料」。
以下是我程式操作的範例:
以下是我程式操作的範例:
/*首先進行宣告,並且定義命名空間std,在後續操作比較輕鬆。*/#include <fstream> using namespace std; /* 以下就是程式的部分,因為只是片段,我就不特別用function來包了 宣告一個fstream物件,CString是用來存放檔案名稱的,realsize的目的是為了取得檔案的大小。 */ fstream fp_img; CString text_ShowInf; int realSize1; /* 這邊進行開檔案的步驟,open函數的引述有檔名&Mode Mode的部分我這邊只需要讀取二進位檔案,所以只用了ios_base::in | ios_base::binary這兩項參數。 */ text_ShowInf.Format("img1.jpg"); fp_img.open(text_ShowInf,ios_base::in | ios_base::binary); /* 下面這部份是要取得檔案到小,流程依序是: (1)把讀取位置移動到檔案末端(fp_img.end) (2)取的所在的位置(就是大小了),用fp_img.tellg()取得當前位置 (3)再把讀取位置移到檔案開頭,這樣才能讀到完整的檔案 */ fp_img.seekg (0, fp_img.end); realSize = (int)fp_img.tellg(); fp_img.seekg (0, fp_img.beg); /* 知道了檔案有多大,就可以宣告一個暫存空間來存放讀取來的資料,因為是C++環境,直接用new的方式進行。 */ char * imgBuf =new char[realSize]; /* 讀取全部的檔案資料,前面是目的地,後面是讀取大小 */ fp_img.read(imgBuf,realSize); /* 使用完的檔案要close關閉結束操作。 */ fp_img.close();
/*釋放掉剛剛建立的暫存空間,如果這段程式是要重複不斷執行,指標就應該被釋放*/
delete imgBuf;
|
留言
張貼留言