2010-10-28 76 views
0

我有一個形象,這是一個典型的Array2D:如何在C++中調整圖像大小?

template<class T = uint8_t> 
Array2D<T> mPixData[4]; ///< 3 component channels + alpha channel. 

的評論是在庫中。我沒有解釋的線索。

會有人:

  1. 解釋什麼是3分量渠道+ Alpha通道即將

  2. 顯示我怎麼能調整基礎上,mPixData

+0

當調整圖像大小,你應該記住這一點,如果你的應用需要它:HTTP:/ /www.4p8.com/eric.brasseur/gamma.html – bjoernz 2010-10-30 21:13:07

回答

2

這個圖像,而不知道這是什麼圖書館,這裏是在黑暗中刺:

  1. 類型定義意味着它正在創建無符號字符的2D陣列(允許你值存儲多達255

    template<class T = uint8_t> Array2D<T>

  2. 然後,mPixData本身的陣列,這意味着在每個座標,你有四個值(字節來抗衡),3個顏色(比方說RGB,但可能是別的東西)和1個阿爾法。

  3. 「圖像」基本上就是這個三維數組。大概在加載東西時,它會調整輸入大小 - 你需要做的是找到某種形式的調整算法(我自己不是一個圖像處理專家,但肯定谷歌會透露一些東西),這將允許你採取這個數據並且做你需要的...

1

1)3分量通道 - 紅綠藍通道。 alpha通道講述圖像透明度

2)有許多算法可用於調整圖像大小。最簡單的方法是丟棄額外的像素。另一個簡單的方法是插值

1

3分量通道代表紅綠藍(aka RGB)通道。第四頻道ALPHA是透明頻道。 [4]

甲像素由mPixData[4]

mPixData[0] -> R 
mPixData[1] -> G 
mPixData[2] -> B 
mPixData[3] -> A 

因此定義,圖像可被表示爲mPixData的載體或陣列。正如你已經說過的,在這種情況下是Array2D<T> mPixData[4];

Resize/rescale/resample an image不是一個微不足道的過程。網上有很多關於它的資料,我認爲你應該考慮用圖書館來做到這一點。檢查CxImage(Windows/Linux)。

有一些代碼here但我沒有測試過它。檢查resample()函數。