2017-06-10 8 views

Répondre

4

actif = Vous devez passer votre 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]; 
} 

Vérifier l'image que le mode paysage ou en mode portrait

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; 
} 

Ajouter cette autorisation dans le fichier Info.plist

<key>NSPhotoLibraryUsageDescription</key> 
<string>$(PRODUCT_NAME) would like to access your photo library to let you select a picture.</string> 
+0

Merci pour les années j'ai essayé vos ans mais je reçois ce type d'erreur imprime sur journal :: réglage des informations de sécurité: Opération non autorisée et aussi j'essaie d'enregistrer l'image de Phasset URL à document Direcory, mais je reçois L'erreur - accès non permettre pour raison de sécurité. – Keyur

+0

vous devez ajouter une chose dans le fichier info.plist que j'ai ajouté dans ma réponse. @KeyurAspiration –

+0

j'ai déjà ajouté dans info.plist comme Photo, Caméra, MicroPhone Description Access, une autre chose et un autre tableau d'images enregistrer dans le répertoire de documents avec hors avertissement de la mémoire issue.so s'il vous plaît dites-moi. – Keyur

1

Vous pouvez obtenir le imageURL de 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; 
}]; 
+0

@ a-Tuo Veuillez répondre en Objective-C parce que je n'ai aucune idée dans Swift – Keyur

+0

@KeyurAspiration Avez-vous ajouté la touche "Confidentialité - Description de l'utilisation de la photothèque" pour obtenir la permission d'accéder à Phot os? –

+0

@ a-tuo Oui, j'ai déjà donné cette "Confidentialité - Description de l'utilisation de la photothèque" – Keyur