-2
是vImageConvert_RGB888toARGB8888
和vImagePermuteChannels_ARGB8888
。首先將其從RGB24更改爲ARGB,因爲OPENGL ES不支持ARGB,因此需要將ARGB更改爲BGRA,其格式爲vImagePermuteChannels_ARGB8888
。但是當數據需要改變的時候成本很高,那麼有更好的方法的人呢?謝謝!我的代碼是這樣的:如何在iOS上快速將RGB24轉換爲BGRA?我使用的
- (void)transformRGBToBGRA:(const UInt8 *)pict{
rgb.data = (void *)pict;
vImage_Error error = vImageConvert_RGB888toARGB8888(&rgb,NULL,0,&argb,NO,kvImageNoFlags);
if (error != kvImageNoError) {
NSLog(@"vImageConvert_RGB888toARGB8888 error");
}
const uint8_t permuteMap[4] = {3,2,1,0};
error = vImagePermuteChannels_ARGB8888(&argb,&bgra,permuteMap,kvImageNoFlags);
if (error != kvImageNoError) {
NSLog(@"vImagePermuteChannels_ARGB8888 error");
}
free((void *)pict);
}
你已經發布了這個,並得到了一個答案4滴答=爲什麼你再次發佈它?請參閱http://stackoverflow.com/q/11683864/96716 – 2012-07-28 14:22:33
因爲我認爲它們不同,一個是BGR,另一個是BGRA,它們需要不同的內存容量。所以我想知道APPLE是否有更簡單的API來完成這項工作。 – zhzhy 2012-07-30 00:57:09