如何从PHAsset获取图像URL? 是否可以使用PHAsset URL将图像保存到文档目录?

我用了

`NSURL *urlA = [info valueForKey:@"PHImageFileURLKey"];` 

但是当我尝试使用URL保存图像时,URL为零。

  `NSData *pngData =[NSData dataWithContentsOfURL:urlA options:NSDataReadingMapped error:nil];` 

asset =在这里你必须通过你的PHAsset。

 PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init]; [[PHImageManager defaultManager] requestImageDataForAsset:asset options:imageRequestOptions resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { NSLog(@"info = %@", info); if ([info objectForKey:@"PHImageFileURLKey"]) { NSURL *path = [info objectForKey:@"PHImageFileURLKey"]; // if you want to save image in document see this. [self saveimageindocument:imageData withimagename:[NSString stringWithFormat:@"DEMO"]]; } }]; -(void) saveimageindocument:(NSData*) imageData withimagename:(NSString*)imagename{ NSString *writePath = [NSString stringWithFormat:@"%@/%@.png",[Utility getDocumentDirectory],imagename]; if (![imageData writeToFile:writePath atomically:YES]) { // failure NSLog(@"image save failed to path %@", writePath); } else { // success. NSLog(@"image save Successfully to path %@", writePath); } } + (NSString*)getDocumentDirectory { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [paths objectAtIndex:0]; } 

检查横向模式或纵向模式的图像

 if (chooseimage.size.height >= chooseimage.size.width) { Islandscape = NO; }else{ UIImage* landscapeImage = [UIImage imageWithCGImage:chooseimage.CGImage scale:chooseimage.scale orientation:UIImageOrientationLeft]; self.imgPreviewView.image = landscapeImage; self.imgPreviewView.contentMode = UIViewContentModeScaleAspectFill; Islandscape = YES; } 

将此权限添加到info.plist文件中

 NSPhotoLibraryUsageDescription $(PRODUCT_NAME) would like to access your photo library to let you select a picture. 

您可以从PHContentEditingInput获取imageURL:

迅速:

 asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { (eidtingInput, info) in if let input = eidtingInput, let imgURL = input.fullSizeImageURL { // imgURL } } 

Objective-C的:

 [asset requestContentEditingInputWithOptions:[PHContentEditingInputRequestOptions new] completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { NSURL *imageURL = contentEditingInput.fullSizeImageURL; }];