首先你需要讀檔案。
然後,你需要解析檔案,為了解析這個檔案,你需要知道檔案的structure。
因為你不知道structure而且因為這個事情比較繁瑣,所以你應該使用相應的庫。
一般情況下,這些庫的名字叫做:libjpeg,libpng,libbmp(bmp這個並沒有著名的庫),libgif。
cxImage是一個不錯的c++庫,不過既然你是純C,那麼即使你的程式碼是純C但依賴libc++顯然也是不清真的……當然,這不到庫的時候,你應該去這裡找http://www.github.com然後通常影象在記憶體中的狀態。
常見的是三維char陣列:
32位色:char[height][width][4],4個位元組的順序通常是argb或者rgba,png正文解壓縮後就是這個樣子,正常情況下視訊記憶體也是這個樣子的。
24位色:char[height][width][3],三個位元組的順序一般是rgb:無壓縮的bmp的正文段就是這個樣子。
8位灰度圖:char[height][width],每一個位元組是灰度值。
點陣圖:bit[height][width],正常情況下是char[height][int(width/8)],這種形式和上面的灰度圖也是很常見的。
首先你需要讀檔案。
然後,你需要解析檔案,為了解析這個檔案,你需要知道檔案的structure。
因為你不知道structure而且因為這個事情比較繁瑣,所以你應該使用相應的庫。
一般情況下,這些庫的名字叫做:libjpeg,libpng,libbmp(bmp這個並沒有著名的庫),libgif。
cxImage是一個不錯的c++庫,不過既然你是純C,那麼即使你的程式碼是純C但依賴libc++顯然也是不清真的……當然,這不到庫的時候,你應該去這裡找http://www.github.com然後通常影象在記憶體中的狀態。
常見的是三維char陣列:
32位色:char[height][width][4],4個位元組的順序通常是argb或者rgba,png正文解壓縮後就是這個樣子,正常情況下視訊記憶體也是這個樣子的。
24位色:char[height][width][3],三個位元組的順序一般是rgb:無壓縮的bmp的正文段就是這個樣子。
8位灰度圖:char[height][width],每一個位元組是灰度值。
點陣圖:bit[height][width],正常情況下是char[height][int(width/8)],這種形式和上面的灰度圖也是很常見的。