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;

留言

Facebook

這個網誌中的熱門文章

[房屋]裝潢紀錄分享- 基本包冷氣管包梁工程。把冷氣管隱藏得無影無蹤

[工具]線上模擬器。簡單的硬體電路模擬小工具Falstad: Circuit Simulatior Applet

[印尼]印尼 巴淡島 旅遊 TOP 100量販超市必買商品推薦。咖啡、生活用品、泡麵

[心得]天作之合音樂劇「阿堯 Shemenayha」 at 台北表演藝術中心 大劇院

[食記]將捷金鬱金香酒店- 河畔餐廳 主餐+自助餐吃到飽心得

[比較]微軟Microsoft Surface Go v.s. 華碩ASUS T103HAF輕巧變形筆電規格比較心得

[開箱]三星平板Samsung Tab A7 Lite 使用心得分享

為您推薦