IPHONE: Come estraggo i canali RGB di un UIIMage?
-
05-07-2019 - |
Domanda
Ho un UIImage con canale alfa.
Come estraggo i canali RGB di un UIImage, ognuno dei quali è un UIImage indipendente con alpha?
grazie in anticipo.
Soluzione
Come questo .
Inoltre, dai un'occhiata a questa domanda - terza risposta con dettagli paranoici
E un po 'di codice per accedere ai pixel e salvarli in un nuovo 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];
adattato da qui . Per avere i tre canali distinti in immagini separate, fai come nel codice, imposta a zero tutto tranne il canale che vuoi salvare ogni volta, quindi crea la nuova immagine.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow