Comment puis-je enregistrer une image (comme la méthode UIImageWriteToSavedPhotosAlbum()) avec un nom de fichier de mon choix dans le dossier privé/var?UIImage Enregistrement d'une image avec le nom de fichier sur l'iPhone
12
A
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];
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;
}
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]; –
[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
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 –