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

這個網誌中的熱門文章

[開箱]超迷你筆電平板二合一隨身機入手。華碩ASUS Transformer Mini T103HAF開箱心得

[開箱] ASUS Vivobook 13 Slate OLED 變形平板使用心得分享 (T3300KA)

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

[住宿]2022年4月 廈門高崎國際機場 → 廈門國際健康驛站 中國出差防疫隔離心得

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

[開箱]華碩TUF GAMING VG27UQ1A 4K螢幕開箱使用體驗

[開箱]SONY 藍芽耳機WI-XB400心得評價。入耳式平價藍芽耳機的最佳選擇

為您推薦