I used
`NSURL *urlA = [info valueForKey:@"PHImageFileURLKey"];` but when i try to save image using URL then URL is nil.
`NSData *pngData =[NSData dataWithContentsOfURL:urlA options:NSDataReadingMapped error:nil];` I used
`NSURL *urlA = [info valueForKey:@"PHImageFileURLKey"];` but when i try to save image using URL then URL is nil.
`NSData *pngData =[NSData dataWithContentsOfURL:urlA options:NSDataReadingMapped error:nil];` asset = Here you have to pass your 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]; } Check image that landscape mode or portrait mode
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; } Add this permission into info.plist file
<key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) would like to access your photo library to let you select a picture.</string> You can get the imageURL from PHContentEditingInput:
Swift:
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; }];