用相册写的照片保存照片

时间:2012-06-12 06:58:38

标签: iphone uiview subclass photo quartz-graphics

我有一个包含书面广告的UIView子类,我希望将它添加到图形上下文中的照片上,但是当我保存照片时,这个UIView没有保存在相册中。这是代码:

 - (IBAction)saveAction:(id)sender{


CGRect newFrame=imageInImageViewFrame(self.userImageView.bounds,self.userImageView.bounds.size);


CGSize imageSize=self.userImageView.bounds.size;

if (NULL != UIGraphicsBeginImageContextWithOptions)
    UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
else
    UIGraphicsBeginImageContext(imageSize);

CGContextRef context = UIGraphicsGetCurrentContext();

UIGraphicsPushContext(context);

[self.userImageView.image drawInRect: newFrame];
self.banner =[[Banner alloc]initWithFrame:CGRectMake(0, 324, 320, 48)];//this is the UIView that I want add on photo

[self.userImageView addSubview:self.banner];
NSLog(@"The image is %@", self.banner);

UIGraphicsPopContext();
[self renderView:self.gestureView inContext:context ];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil);

UIGraphicsEndImageContext();

NSString *docPath=(NSString*)[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES) objectAtIndex:0];
NSString *imagesPath=[NSString stringWithFormat:@"%@/%@/%@",docPath, self.profileName,imageDirectory];
     //trovare progressivo forse con enumerazione di directory
[[NSFileManager defaultManager]createDirectoryAtPath:imagesPath withIntermediateDirectories:NO attributes:nil error:nil]; //crazione di una directory a un certo indirizzo
NSData *imageData=UIImageJPEGRepresentation(screenshot, 0.9);
NSMutableArray *dirContent=[[[NSFileManager defaultManager]contentsOfDirectoryAtPath:imagesPath error:nil]mutableCopy]; //copia del contenuto della directory
[dirContent removeObject:@".DS_Store"]; //rimuove il file nascosto
NSArray *sortedFileNames=[dirContent sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSString *lastFileName=[sortedFileNames lastObject];
[dirContent release];

int progressiveImageNumber=[[[lastFileName componentsSeparatedByString:@"_"]objectAtIndex:1]intValue];
NSString *fullImageNamePath=[NSString   stringWithFormat:@"%@/photoImage_%.2d.jpg",imagesPath,progressiveImageNumber+1];
NSLog(@"fullimagepath:%@",fullImageNamePath);

[imageData writeToFile:fullImageNamePath atomically:YES];     

}

照片已保存,但UIView未保存。我能怎么做?提前致谢

1 个答案:

答案 0 :(得分:0)

通过删除您的代码在您的方法中使用此代码:

 UIGraphicsBeginImageContext(self.gestureView.bounds.size);
 [self.gestureView.layer renderInContext:UIGraphicsGetCurrentContext()];
 UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 // save image to photos
 UIImageWriteToSavedPhotosAlbum(screenShot, self, nil, nil);