从画廊加载照片
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);
}];
}
Apple 创建了一个使用 PHPhotoLibrary 的示例应用程序。它可用 here。
我有一张来自相机胶卷的 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);
}];
}
Apple 创建了一个使用 PHPhotoLibrary 的示例应用程序。它可用 here。