我創建使用ARGB和kCGImageAlphaPremultipliedFirst格式。爲什麼像素顏色存儲爲(255數據)?
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
// more code - not relevant - removed for debugging
image = UIGraphicsGetImageFromCurrentImageContext(); // the image is now ARGB
UIGraphicsEndImageContext();
然後我嘗試(從這裏米納斯Petterson的使用代碼:Get Pixel color of UIImage)找到一個像素的顏色的圖像。 但因爲圖像是現在ARGB格式,我不得不修改了代碼與此:
alpha = data[pixelInfo];
red = data[(pixelInfo + 1)];
green = data[pixelInfo + 2];
blue = data[pixelInfo + 3];
然而,這沒有奏效。
的問題是,(例如)紅色像素,在RGBA將表示爲(實際上255 0 0 255,但爲了簡單起見我用0至1的值),在圖像是表示爲和不(如我想) 。 任何想法爲什麼?難道我做錯了什麼?
PS。我必須使用的代碼看起來像它必須是這樣的:
alpha = 255-data[pixelInfo];
red = 255-data[(pixelInfo + 1)];
green = 255-data[pixelInfo + 2];
blue = 255-data[pixelInfo + 3];
A(笨)的解決方案是隱蔽的使用該命令圖像RGBA:圖像= [UIImage的imageWithData:UIImagePNGRepresentation(圖像)];但我想至少有10個更好的方法來解決我的問題! – Gik