Di seguito è riportato il codice che ho copiato (da questo sito) e modificato solo leggermente poiché il codice originale non verrebbe compilato. Voglio manipolare l'array di byte per il rilevamento dei bordi e, infine, semplici modifiche ai colori, ma prima volevo che il codice di base funzionasse. Attualmente, il sistema compila ed esegue. Mostra un elefante mal disegnato sullo schermo. Quando tocco l'immagine, scompare. Passando attraverso mostra il risultato di imageWithData come 0x0. Ho provato questo con un png e un bmp e lo stesso risultatoCrea UiImage da NSData
Eventuali indizi su cosa sto facendo male ?!
ImageViewDrawable è definito come:
@interface ImageViewDrawable : UIImageView
// I am using the following code to initialize this ImageView
ImageViewDrawable * uiv = [[ImageViewDrawable alloc] initWithImage:[UIImage imageNamed:@"ele.png"] ];
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// get and work on pixel data
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(self.image.CGImage));
char* bytes =[pixelData bytes];
// Take away the red pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {
bytes[i] = bytes[i]; // red
bytes[i+1] = bytes[i+1]; // green
bytes[i+2] = bytes[i+2]; // blue
bytes[i+3] = bytes[i+3]; // alpha
}
// convert pixel back to uiiimage
NSData* newPixelData = [NSData dataWithBytes:bytes length:[pixelData length]];
char * bytes2 =[pixelData bytes];
UIImage * newImage = [UIImage imageWithData:newPixelData] ;
[self setImage: newImage ];
}
Quindi non importa che i dati che sto somministrando provengano essenzialmente da un UIImage esistente? –
Vedo il mio problema. Questo gruppo nidificato di chiamate - CGDataProviderCopyData (CGImageGetDataProvider()) - ottiene il fornitore di dati, quindi JUST copia i dati. Il che significa che sto ottenendo solo i pixel e non il resto della configurazione dall'immagine originale. Quindi devo ricreare un'immagine usando quei pixel e le informazioni CG a cui hai fatto riferimento. Grazie ancora per l'aiuto –