2010-02-15 16 views

Répondre

17

Kenny, vous avez eu la réponse! Par exemple, je pense toujours que le code est plus utile.

//I do this in the didFinishPickingImage:(UIImage *)img method 

NSData* imageData = UIImageJPEGRepresentation(img, 1.0); 


//save to the default 100Apple(Camera Roll) folder. 

[imageData writeToFile:@"/private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomically:NO]; 
+2

Exemple d'enregistrement dans le dossier de documents NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * documentsDirectory = [chemins objectAtIndex: 0]; NSString * filePath2 = [NSString stringWithFormat: @ "% @ /% @. Jpg", documentsDirectory, nomFichier]; NSData * imageData = UIImageJPEGRepresentation (drawImage.image, 1.0); [imageData writeToFile: filePath2 atomiquement: NO]; –

+0

[imageData writeToFile: @ "/ private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomiquement: NO]; Quel est ce dossier privé/var/mobile? Est-ce un endroit standard pour écrire un fichier dans ios? – user798719

+3

La question est, si Apple permettra une application avec ce code ... http://stackoverflow.com/questions/2884003/will-the-app-get-rejected-if-you-write-image-to-private -var-mobile-media-dcim-1? lq = 1 –

10

UIImageWriteToSavedPhotosAlbum() est uniquement utilisé pour l'enregistrement sur le rouleau de photos. Pour enregistrer dans un dossier personnalisé, vous devez convertir l'UIImage en NSData avec UIImageJPEGRepresentation() ou UIImagePNGRepresentation(), puis enregistrez cette NSData où vous voulez.

+0

Kenny, merci. +1 – erastusnjuki

0

Vous pouvez utiliser le code ci-dessous, sans utiliser ALAssetsLibrary ...

NSString *fileName; 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
[picker dismissViewControllerAnimated:YES completion:^{ 

if([picker sourceType] == UIImagePickerControllerSourceTypeCamera) 
      { 
       UIImageWriteToSavedPhotosAlbum(image,nil, nil, nil); 
       [self performSelector:@selector(GetImageName) withObject:nil afterDelay:0.5]; 
      } 
      else 
      { 
       NSURL *refURL = [info valueForKey:UIImagePickerControllerReferenceURL]; 
       PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[refURL] options:nil]; 
       fileName = [[result firstObject] filename]; 
      } 
}]; 

-(void)GetImageName 
{ 
NSString *str [email protected]""; 
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; 
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]]; 
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; 

if (fetchResult != nil && fetchResult.count > 0) { 

    str = [[fetchResult lastObject] filename]; 
} 

fileName = str; 
}