UIImagePickerController 相机未将照片保存在照片库中
Posted
技术标签:
【中文标题】UIImagePickerController 相机未将照片保存在照片库中【英文标题】:UIImagePickerController Camera Not saving Photos in Photo Library 【发布时间】:2013-01-03 07:39:45 【问题描述】:以前有人遇到过这个问题吗?我正在使用UIImagePickerController
相机通过我的应用程序拍照,我注意到照片在拍摄后没有存储在照片库中。我已经在 iPhone4 的 ios5 和 iPhone5 的 iOS6 上尝试过,结果相同。这是我的设置方式:
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.delegate = self;
[self.navigationController presentModalViewController:imagePickerController animated:YES];
[imagePickerController release];
似乎 UIImagePickerController 应该隐式保存拍摄到用户照片库的照片?任何帮助将不胜感激。
【问题讨论】:
你好@CoDEFRo 我最近编辑了我的答案,请尝试一下。 【参考方案1】:试试下面的代码。
-(IBAction)useCamera
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera])
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = NO;
[self presentViewController:imagePicker animated:YES completion:nil];
newMedia = YES;
#pragma mark- camera picker delegate methods
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
[self dismissViewControllerAnimated:YES completion:nil];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
UIImage *image = [info
objectForKey:UIImagePickerControllerOriginalImage];
[imageView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth)];
imageView.image = image;
if (newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
// Code here to support video if enabled
-(void)image:(UIImage *)image
finishedSavingWithError:(NSError *)error
contextInfo:(void *)contextInfo
if (error)
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Save failed"
message: @"Failed to save image"\
delegate: nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
从相机中挑选照片并将其存储到 ImageView 并调用 save 方法将其保存到相机胶卷。 希望这会有所帮助
【讨论】:
感谢您的回复。那么,UIImagePickerController 的相机不会将照片隐式保存到您的照片库中吗?这对我来说似乎不正确。 不,您必须自己添加这些方法(上面的代码似乎正确)。调用UIImageWriteToSavedPhotosAlbum
是实际保存到照片库的部分。
@RicardoRendonCepeda - 谢谢。那么 UIImagePickerControllerSourceTypeCamera 应该或不应该返回刚刚拍摄的照片的资产吗?因为我的问题不是照片不在库中,而是资产由于某种原因返回 nil,我无法从中提取缩略图,也无法使用它来异步加载图像。
sourceType 只是定义你的图像选择器从哪里获取它的媒体。上面的代码检查设备是否有摄像头,然后继续启动使用摄像头的图像选择器对象。如果它返回 nil,那么这意味着它没有检测到设备上的摄像头。
@RicardoRendonCepeda - 感谢您的回复。抱歉,我实际上是指 UIImagePickerControllerReferenceURL。以上是关于UIImagePickerController 相机未将照片保存在照片库中的主要内容,如果未能解决你的问题,请参考以下文章
SVG 覆盖在 UIImagePickerController 之上,UIImagePickerController 响应手势(iPhone/iOS)