2010-08-15 14 views
1

J'ai un petit programme d'esquisse que j'ai réussi à assembler en utilisant Quartz2D, mais je suis très nouveau sur la plateforme iOS et j'ai de la difficulté à trouver comment permettre à l'utilisateur de sauvegarder son dessin. J'ai un CGContextRef qui contient l'esquisse, comment puis-je l'enregistrer pour qu'il puisse être récupéré plus tard? Une fois enregistré, comment puis-je le récupérer?Comment sauvegarder une image bitmap, représentée par un CGContextRef, sur le disque dur de l'iPhone?

Merci beaucoup d'avance pour votre aide! Je vais continuer à lire à ce sujet maintenant ...

Répondre

3

Voilà comment je l'ai fait ...

Enregistrement

CGImageRef imageRef = CGBitmapContextCreateImage(bitmapContext); 
UIImage* image = [[UIImage alloc] initWithCGImage:imageRef]; 
NSData* imageData = UIImagePNGRepresentation(image); 
[imageData writeToFile:filePath atomically:YES]; 

Récupération

UIImage* image = [UIImage imageWithContentsOfFile:filePath]; 
CGImageRef imageRef = [image CGImage]; 
+0

-1 Le code des fuites imageRef et de l'image. –

+1

Je n'ai pas inclus les instructions de version, mais elles sont présentes. – BeachRunnerFred

+3

+1 Les extraits de code ne fuient pas la mémoire –

3

Il existe différents types de CGContexts. Vous avez probablement un contexte basé sur un écran, mais vous aurez besoin d'un bitmapContext ou d'un pdfContext, pour créer un fichier bitmap ou un fichier pdf.

Voir le UIKit Functions Reference. Les fonctions qui devraient intéresser sont:

  • UIGraphicsBeginImageContext()
  • UIGraphicsGetImageFromCurrentImageContext()
  • UIGraphicsEndImageContext()
  • UIImageJPEGRepresentation()
  • UIImageWriteToSavedPhotosAlbum()
  • UIGraphicsBeginPDFContextToFile()
  • UIGraphicsEndPDFContext()