从画廊加载照片

Load photo from gallery

我有一张来自相机胶卷的 NSURL 照片,我想从中加载图像或 NSData

我试试这个:

NSData *imageDataTemp = [NSData dataWithContentsOfURL:path];

但它 return 是图像大小的一半。

以下是如何加载具有 ALAsset URL.

的图像

使用 ALAssetLibrary(在 iOS 9.0 中已弃用)

ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *asset)
{
    ALAssetRepresentation *representation = [asset defaultRepresentation];
    CGImageRef image = [representation fullResolutionImage];

    if (image) 
    {
        yourImageView.image = [UIImage imageWithCGImage:image];
    }
};

ALAssetsLibraryAccessFailureBlock failureBlock  = ^(NSError *error)
{
    NSLog(@"Error %@", [error localizedDescription]);
};

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

[library assetForURL:assetURL 
         resultBlock:resultBlock
        failureBlock:failureBlock];

使用 PHPhotoLibrary

    NSURL *yourALAssetURL;
    PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[yourALAssetURL] options:nil];
    PHAsset *asset = result.firstObject;

    if (asset)
    {
        PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init];

        // Request an image for the asset from the PHCachingImageManager.
        [imageManager requestImageForAsset:asset
                                targetSize:CGSizeMake(100.0f, 100.0f)
                               contentMode:PHImageContentModeAspectFill
                                   options:nil
                             resultHandler:^(UIImage *image,
                                             NSDictionary *info)
         {
             NSLog(@"IMAGE: %@", image);
         }];
    }

A​​pple 创建了一个使用 PHPhotoLibrary 的示例应用程序。它可用 here