IPHONE: Как мне извлечь каналы RGB UIIMage?
-
05-07-2019 - |
Вопрос
У меня есть UIImage с альфа-каналом. Р>
Как извлечь каналы RGB из UIImage, каждый из которых должен быть независимым UIImage с альфа-каналом?
заранее спасибо.
Решение
Мне нравится это . Р>
Кроме того, взгляните на этот вопрос - третий ответ в параноидальных подробностях
И немного кода для доступа к пикселям и их сохранения в новом 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];
адаптировано из здесь . Чтобы иметь три отдельных канала в отдельных изображениях, сделайте, как в коде, установите на ноль все, кроме канала, который вы хотите сохранять каждый раз, а затем создайте новое изображение.
Не связан с StackOverflow