如何从相机胶卷中挑选照片

Posted

技术标签:

【中文标题】如何从相机胶卷中挑选照片【英文标题】:How to pick photo from camera roll 【发布时间】:2016-03-25 06:44:23 【问题描述】:

我不知道如何通过 phphotoLibrary 或 ALAssetsLibrary 从您的相册中获取照片并将它们安装在 uicollectionviewcell 中,就像在 instagram 中一样。我是目标 c 的新手 :)

不安装 - 添加

【问题讨论】:

也许我提出的问题不对。我需要在 ViewController 打开时从相册中填充 UICollectionViewCell 照片,而不像这样使用 ImagePicker 【参考方案1】:

我不确定您所说的“安装到 uicollectionviewcell”是什么意思,但以下是您从相册中获取照片的方式。

    请求授权 显示一个 UIImagePickerController(这是苹果为我们创建的默认图像选择器视图) 实现委托方法来处理从 UIImagePickerController 中选取的图像

代码如下所示

进口声明:

#import <Photos/Photos.h>

实例化要显示的图像选择器控制器:

UIImagePickerController* imagePicker = [[UIImagePickerController alloc]init];
// Check if image access is authorized
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    // Use delegate methods to get result of photo library -- Look up UIImagePicker delegate methods
    imagePicker.delegate = self;
    [self presentViewController:imagePicker animated:true completion:nil];

我相信这通常会提示用户访问照片库,但在简单地尝试显示图像选择器之前处理所有授权情况始终是一种好习惯。

请求授权:

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    if(status == PHAuthorizationStatusNotDetermined) 
        // Request photo authorization
        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) 
            // User code (show imagepicker)
    ];
     else if (status == PHAuthorizationStatusAuthorized) 
        // User code
     else if (status == PHAuthorizationStatusRestricted) 
        // User code
     else if (status == PHAuthorizationStatusDenied) 
        // User code
    

最终实现委托方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    UIImage *image = info[UIImagePickerControllerOriginalImage];
    // Do something with picked image

选择图像后,您可以将其添加到新实例化的 UICollectionViewController。这可能是另一个问题,您最好阅读相关文档。 请注意,这是在ios8中引入的(我认为?),但AL路由代码将与上述类似。


已添加

照片库只是另一个数据库,但您仍然需要向用户请求授权。 步骤如下:

    请求授权 从照片库中检索照片

我自己还没有完成#2,但似乎有办法做到这一点。

Get all of the pictures from an iPhone photoLibrary in an array using AssetsLibrary framework?

粗略看来,这似乎是一个异步函数,因此您应该进行相应的编码(如果我是您,我会在每个 UICollectionViewCell 中调用 requestImage 函数)。

如果遇到任何问题,请发表评论。 祝你好运!

【讨论】:

也许我提出的问题不对。我需要在 ViewController 打开时从相册中填充 UICollectionViewCell 照片,而不使用 ImagePicker like this 如果不是更难,请解释如何在单元格中一次添加图像,因为我的代码很差))1st part2nd part 如果你的 UICollectionViewCell 有一个部分,那么你应该调用 [self.imgArray objectAtIndex:[indexPath row]];参考developer.apple.com/library/mac/documentation/Cocoa/Reference/… 这是一个模糊问题的好答案。如果我能给你 500 票,我会的!您显然愿意在这里帮助整个社区,即使最初的问题措辞不佳且通常不清楚。【参考方案2】:

你需要声明委托 UIImagePickerControllerDelegate

像这样..

希望对你有很大帮助...

- (IBAction)captureImagehandler:(id)sender
   
    if (! [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 

    UIAlertView *deviceNotFoundAlert = [[UIAlertView alloc] initWithTitle:@"No Device" message:@"Camera is not available"
                                                             delegate:nil
                                                    cancelButtonTitle:@"exit"
                                                        otherButtonTitles:nil];
    [deviceNotFoundAlert show];

 
else 


    UIImagePickerController *cameraPicker = [[UIImagePickerController alloc] init];
    cameraPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    cameraPicker.delegate =self;
    // Show image picker
    [self presentViewController:cameraPicker animated:YES completion:nil];


【讨论】:

这个 sn-p 搞砸了,它不符合问题的要求。

以上是关于如何从相机胶卷中挑选照片的主要内容,如果未能解决你的问题,请参考以下文章

如何避免将从相机胶卷中挑选的图像保存到相机胶卷? [iOS]

从 ipad 上的相机胶卷中选择照片需要弹出框控制器错误

优化从相机胶卷中挑选的图像以减小文件大小

如何使用 Photos 框架从 iOS 上的相机胶卷中获取最新照片?

科尔多瓦,从相机胶卷中获取所有照片

如何对相机胶卷中的照片进行方形切割?