2010-04-02 11 views
8

He dibujado un CGContext de una UIView.Cómo guardo lo que he dibujado en un CGContext

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

Me gustaría guardar lo que he dibujado en un archivo png.

¿Existe una solución simple?

EDIT: En base a sugerencias abajo - esto es lo que tengo hasta ahora ....

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

quizá algo mejor pedir es cómo crear un contexto de mapa de bits y reproducir mis dibujos en eso. – sylvanaar

Respuesta

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

Debo extrañar algo simple. Lo hago dentro de la llamada drawRect. Ejecutando en el simulador de iPhone: no veo ningún archivo creado. – sylvanaar

+0

Puede que tenga que especificar la ruta completa al directorio de Documentos en lugar de simplemente image.png. – indragie

+0

He actualizado mi código de ejemplo anterior, pero no se ha creado ningún archivo en el emulador. Gracias por la ayuda sin embargo. – sylvanaar

1

llamada UIGraphicsGetImageFromCurrentImageContext para obtener una UIImage.
Luego llame al UIImagePNGRepresentation para obtener un NSData del UIImage codificado en PNG.
Finalmente, llame al -writeToFile:… para guardar el NSData.

6
CGImageRef imgRef = CGBitmapContextCreateImage(context); 

UIImage* img = [UIImage imageWithCGImage:imgRef]; 

CGImageRelease(imgRef); 
+1

No solo publiques el código como respuesta, intenta darle una explicación de por qué esto ayudará. – Dutts

Cuestiones relacionadas