IPHONE: Как мне извлечь каналы RGB UIIMage? - PullRequest
3 голосов
/ 26 ноября 2009

У меня есть UIImage с альфа-каналом.

Как извлечь каналы RGB из UIImage, каждый из которых должен быть независимым UIImage с альфа-каналом?

спасибо заранее.

1 Ответ

3 голосов
/ 26 ноября 2009

Как это .

Также взгляните на этот вопрос - третий ответ в параноидальной детализации
И немного кода для доступа к пикселям и сохранения их в новом UIImage:

UIImage* image = ...; // An image
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
void* pixelBytes = [pixelData bytes];

//Leaves only the green pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {
        bytes[i] = 0; // red
        bytes[i+1] = bytes[i+1]; // green
        bytes[i+2] = 0; // blue
        bytes[i+3] = 0; // alpha
    }

NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]];
UIImage* newImage = [UIImage imageWithData:newPixelData];

адаптировано с здесь . Чтобы три отдельных канала были представлены в отдельных изображениях, выполните действия, описанные в коде, обнулите все, кроме канала, который вы хотите сохранять каждый раз, а затем создайте новое изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...