2010-04-02 3 views
8

J'ai dessiné dans un CGContext d'un UIView. Je souhaite enregistrer ce que j'ai dessiné dans un fichier PNG.Comment sauvegarder ce que j'ai dessiné dans un CGContext

Existe-t-il une solution simple?

EDIT: Sur la base des suggestions ci-dessous - voici ce que j'ai à ce jour ....

-(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

peut-être une meilleure chose à demander est de savoir comment créer un contexte bitmap et rejouer mes dessins dans cela. – sylvanaar

Répondre

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

Il me manque quelque chose de simple. Je fais cela dans l'appel drawRect. En cours d'exécution sur le simulateur iPhone - je ne vois aucun fichier créé. – sylvanaar

+0

Vous devrez peut-être spécifier le chemin d'accès complet au répertoire Documents au lieu de simplement image.png. – indragie

+0

J'ai mis à jour mon code d'exemple ci-dessus - mais aucun fichier n'est créé dans l'émulateur. Merci pour l'aide en tout cas. – sylvanaar

1

Appel UIGraphicsGetImageFromCurrentImageContext pour obtenir une UIImage.
Puis appelez UIImagePNGRepresentation pour obtenir une NSData de l'UIImage codé en PNG.
Enfin, appelez -writeToFile:… pour enregistrer le NSData.

6
CGImageRef imgRef = CGBitmapContextCreateImage(context); 

UIImage* img = [UIImage imageWithCGImage:imgRef]; 

CGImageRelease(imgRef); 
+1

Ne publiez pas seulement du code comme réponse, essayez de lui expliquer pourquoi cela vous aidera. – Dutts

Questions connexes