2013-08-20 29 views
1

我是iPhone App开发的新手。在我的代码中,我可以从库中选择多个图像,并获得只有一个图像的路径。然后我在名为“images”的文件夹中的Documents目录中创建该图像的副本并尝试压缩它。现在我想获得所有这些选择多个图像的路径,将它们复制到文件目录中的相同文件夹“图像”中,并且我想稍后压缩它们。 请告诉我如何在代码中完成上述任务。 这是我的代码看起来是截至目前:如何获取从iPhone库中选择的多个图像的路径?

- (void) imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    if (imagePickerController.allowsMultipleSelection) { 
    NSArray *mediaInfoArray = (NSArray *)info; 
    NSLog(@"Selected %d photos", mediaInfoArray.count); 
    NSData *webData = UIImagePNGRepresentation([[mediaInfoArray objectAtIndex:0] objectForKey:@"UIImagePickerControllerOriginalImage"]); 
    NSLog(@"web data length is: %u",[webData length]); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *localFilePath = [documentsDirectory stringByAppendingString:@"/images.png"]; 
    [webData writeToFile:localFilePath atomically:YES]; 

    NSLog(@"localFilePath.%@",localFilePath); 
} 
+0

这将帮助你。 http://stackoverflow.com/questions/8376511/list-saved-files-in-ios-documents-directory-in-a-uitableview –

+0

我反对,因为你没有接受答案。 – CRDave

回答

1

我用同样的QBImagePickerController和使用下面这个方法在一个NSMutableArray添加多张图片。请检查,一旦它们被添加到阵列中,您可以将它们添加到任何需要的地方。

- (void)imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingMediaWithInfo:(id)info 
    { 
     if(imagePickerController.allowsMultipleSelection) 
     { 
      NSArray *mediaInfoArray = (NSArray *)info;   
      for (int i =0; i<mediaInfoArray.count ; i++) 
      { 
       NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"/Folder/Selected Files"]; 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        NSData *data = UIImageJPEGRepresentation([[mediaInfoArray valueForKey:@"UIImagePickerControllerOriginalImage"] objectAtIndex:i], 1.0); 
        NSString *fileName = [stringPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%d.png",i]]; 
        [data writeToFile:fileName atomically:YES]; 
       }); 
       [ImagesArray addObject:[[mediaInfoArray valueForKey:@"UIImagePickerControllerOriginalImage"] objectAtIndex:i]]; 
      } 
     } 
     else 
     { 
      //NSDictionary *mediaInfo = (NSDictionary *)info; 
      //NSLog(@"Selected: %@", mediaInfo); 
     } 
     }  
     [TableView reloadData];   
     [self dismissViewControllerAnimated:YES completion:NULL]; 
    } 

希望这有助于...

编辑:

好吧,我给你一个更好的解决方案,在缓存目录中保存总是比在文档目录更好的请is saving in NSDocumentDirectory okay?

但是,如果您想将其保存在Documents目录中,那么您可以简单地替换

NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"/Folder/Selected Files"];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
+0

好的,谢谢@IronManGill。我会在我的代码中尝试并检查一次。 – vanya

+0

当然,请让我知道:)) – IronManGill

+0

Iam没有得到。我想在文件夹中的文档目录中创建所选图像的副本。当我复制你的代码时,该文件夹将在Library-> cache中创建。 – vanya

相关问题