Unten ist Code ich kopiert (von dieser Website) und nur geringfügig modifiziert, da der ursprüngliche Code nicht kompilieren würde. Ich möchte das Byte-Array für Kantenerkennung und schließlich einfache Änderungen an Farben manipulieren, aber zuerst wollte ich den grundlegenden Code arbeiten lassen. Momentan wird das System kompiliert und ausgeführt. Es zeigt einen schlecht gezeichneten Elefanten auf dem Bildschirm. Wenn ich das Bild berühre, verschwindet es. Durchgehen zeigt das Ergebnis von imageWithData als 0x0. Ich habe dies sowohl mit einem Png und einem BMP versucht und das gleiche ErgebnisErstellen Sie UiImage von NSData
Irgendwelche Hinweise auf was ich falsch mache?
ImageViewDrawable ist definiert als:
@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 ];
}
Es spielt also keine Rolle, dass die Daten, die ich einspeise, im Wesentlichen von einem vorhandenen UIImage stammen? –
Ich sehe mein Problem. Diese verschachtelte Gruppe von Aufrufen - CGDataProviderCopyData (CGImageGetDataProvider()) - ruft den Datenprovider ab und kopiert dann JUST die Daten. Das bedeutet, dass ich nur die Pixel und nicht den Rest der Konfiguration aus dem Originalbild erhalte. Also muss ich ein Bild mit diesen Pixeln und den CG-Informationen, auf die Sie sich bezogen haben, neu erstellen. Danke nochmal für Hilfe –