如何将图像移动/复制到objective-c中的另一个相册?

时间:2015-12-10 22:47:41

标签: ios objective-c photosframework

我正在编写一个应用程序,此刻应该能够在专辑中专用于应用程序的图像。用户可以通过选择现有图像或使用相机拍摄新图像,从应用程序内部向文件夹添加图片。然而,这个功能非常慢,所以我想知道我是否正确这样做。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

使用所选的UIImage调用此方法:

- (void)addPictureAndUpdate:(UIImage *)image{
    PHFetchOptions *albumFetchOptions = [PHFetchOptions new];
    albumFetchOptions.predicate = [NSPredicate predicateWithFormat:@"%K like %@", @"title", self.albumName];
    PHFetchResult *album = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:albumFetchOptions];
    PHAssetCollection *assetCollection = album.firstObject;

    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];

        PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
        [assetCollectionChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
    } completionHandler:^(BOOL success, NSError *error) {
        if (!success) {
            NSLog(@"Error creating asset: %@", error);
        } else {
            //Add PHAsset to datasource
            //Update view
        }
    }];

这(ChangeRequest的完成)很慢,比如20-30秒甚至更多。

出错了什么?我对iOS开发很新,显然对于新的Photos框架,我真的想学习如何做到这一点。

分离这两件事,显示图像并移动它会更聪明吗?目前,我正在为每个图像存储一个PHAsset,然后在需要时以所需的大小加载(用于在视图中显示的缩略图大小和在全屏显示时的原始大小)。总是只存储UIImage,然后改变它的大小会更聪明吗?这样,我就可以将请求添加到相册中,并立即显示它,因为我只是将UIImage添加到数据源。

我主要担心的是内存问题和扩展问题。为整个专辑存储UIImages会对应用程序造成太大的压力吗?并且,是否可以轻松调整UIImage的大小以进行显示?

谢谢

0 个答案:

没有答案