我正在參加一個計算機圖形類,我需要使用紋理,但我不能使用任何庫來完成它。我被困在加載我需要使用的圖像的RGB值(圖像可以是任何格式,JPG,原始,PNG等..)所以我的問題是,這是最簡單的方法來獲得RGB的值沒有使用任何庫來獲取這個值的圖像(任何格式)?以下是我發現已經在網站上:如何獲取圖像的RGB值?
unsigned char *data;
File *file;
file = fopen("image.png", "r");//
data = (unsigned char *)malloc(TH*TV*3); //TH and TV are both 50
fread(data, TH*TV*3, 1, file);
fclose(file);
int i;
for(i=0;i<TH*TV*3;i++){
//suposing I have a struct RGB for the rgb values
RGB.r = data[?];// how do I get the r value
RGB.g = data[?];// how do I get the g value
RGB.b = data[?];// how do I get the b value
}
感謝
第一次停止發貨! –
我錯過了打開PNG文件的部分。 PNG格式很複雜,編寫代碼來讀取它完全超出了StackOverflow答案的範圍。不使用圖書館是不切實際的。 –
同樣適用於JPG和許多其他格式。有一些很容易解析(PBM/PGM/PNM,TGA等),但大多數更現代的(尤其是那些專注於壓縮圖像的)不需要庫就可以很容易地閱讀。 – twalberg