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.

È stato utile?

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
scroll top