2010-04-02 10 views
8

Ho disegnato in un CGContext di un UIView.Come faccio a salvare ciò che ho disegnato in CGContext

- (void)drawRect:(CGRect)rect { 
    [self drawInContext:UIGraphicsGetCurrentContext()] 
} 

Vorrei salvare ciò che ho disegnato su un file png.

Esiste una soluzione semplice?

EDIT: Sulla base di suggerimenti qui sotto - ecco quello che ho finora ....

-(void)createImage { 
    NSString* outFile = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.png"]; 
    DLog(@"creating image file at %@", outFile); 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    NSData *imageData = UIImagePNGRepresentation(image); 
    [imageData writeToFile:outFile 
       atomically:NO]; 
} 

- (void)drawRect:(CGRect)rect { 
    [self drawInContext:UIGraphicsGetCurrentContext()]; 
    [self createImage]; 
} 
+0

forse una cosa migliore per chiedere è come creare un contesto bitmap e riprodurre i miei disegni in quello. – sylvanaar

risposta

6
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
NSData *imageData = UIImagePNGRepresentation(image); 
[imageData writeToFile:@"image.png"]; 
+0

Mi manca qualcosa di semplice. Lo faccio all'interno della chiamata drawRect. Funzionando sul simulatore dell'iPhone - non vedo alcun file creato. – sylvanaar

+0

Potrebbe essere necessario specificare il percorso completo della directory Documenti invece di solo image.png. – indragie

+0

Ho aggiornato il mio codice di esempio qui sopra, ma nell'emulatore non è stato creato alcun file. Grazie per l'aiuto però. – sylvanaar

1

chiamata UIGraphicsGetImageFromCurrentImageContext per ottenere un UIImage.
Quindi chiamare UIImagePNGRepresentation per ottenere un NSData di UIImage codificato in PNG.
Infine, chiamare -writeToFile:… per salvare NSData.

6
CGImageRef imgRef = CGBitmapContextCreateImage(context); 

UIImage* img = [UIImage imageWithCGImage:imgRef]; 

CGImageRelease(imgRef); 
+1

Non inviare semplicemente il codice come risposta, prova a dargli qualche spiegazione sul motivo per cui questo ti sarà di aiuto. – Dutts

Problemi correlati