2016-03-11 30 views
1

我想寫一個函數,讀取PPM圖像,該函數應該返回的內容。C++與PPM圖像工作

PPM圖像具有以下文本格式:

P3 
numOfRows numOfColumns 
maxColor 
numOfRows-by-numOfColumns of RGB colors 

由於文本格式具有可變類型的混合物,是否有任何方法來存儲這種陣列中的全部?我記得C++不支持不同類型的數組。如果不是,那麼我正在考慮定義一個類來存儲PPM內容。

+0

你是什麼意思*「它會混合類型」*?它不會。如果頭是P3,它將全部是ASCII,如果頭是P6,它將是二進制的。它將全部是整數。 –

回答

0

C++不是Javascript。 列數/行數必須是整數。最大顏色值可能是整數或浮點數,具體取決於格式細節,rgb值也可能如此。

因此,您先閱讀圖像尺寸。然後你創建一個緩衝區來保存圖像。通常32位rgba是你想要的,所以要麼用malloc()分配width * height * 4,要麼使用std :: vector並調整大小。 然後循環訪問數據,讀取數值並將它們放入數組 中。 然後,您創建一個「圖像」對象,具有寬度和高度的整數成員,以及32位rgbas(或任何您喜歡的像素格式)的像素緩衝區。

+0

它不會是RGBA,因爲PPM不支持alpha。 –