iphone - 如何获取从 iPhone 库中选择的多张图片的路径?

标签 iphone ios cocoa-touch ios6

我是 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);
}

最佳答案

我使用了相同的 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?

但是如果你想把它保存在文档目录中,那么你可以简单地替换

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"];

关于iphone - 如何获取从 iPhone 库中选择的多张图片的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18327293/

相关文章:

iphone - 在 iOS/Objective-C 中干燥代码

ios - 计算海拔爬升的总英尺数给出奇怪的结果

iphone - 调用addObject后直接数组计数为0

ios - 调试 iOS 应用程序时 Web Inspector 中的 WebSQL 数据库文件夹在哪里

ios - 在 hitTest :withEvent: 拦截 UIControlEventTouchUpInside

iphone - 将鼠标悬停在 iPhone 上 UIButton 的状态上

ios - 图像未从 iOS 中的文件路径加载

ios - 简单地用矩形遮盖 UIView

objective-c - 为什么每一行代码都给我 "invalid context"?

objective-c - 如何打印 Restkit 发送的正文(IOS)