如何在Objective C中将多张照片保存并加载到我的本地应用程序中?

问题描述 投票:-1回答:2
     -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    image=[info objectForKey:UIImagePickerControllerOriginalImage];
    [self.images addObject:image];
    [self.maintable reloadData];
    [self dismissViewControllerAnimated:YES completion:NULL];
}
    -(IBAction)savebutton:(id)sender{

            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory ,
                                                                 NSUserDomainMask , YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString* path = [documentsDirectory stringByAppendingPathComponent:
                              [NSString stringWithFormat: @"MyImages"]];

        for (int i=0; i<_images.count; i++) {
            image=[_images objectAtIndex:i];

            NSData* data = UIImagePNGRepresentation(image);
            [data writeToFile:path atomically:YES];
            NSLog(@"saved");
        }
    }

- (UIImage*)loadImage   
        {
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                 NSUserDomainMask, YES);`
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString* path = [documentsDirectory stringByAppendingPathComponent:
                              [NSString stringWithFormat: @"MyImage.png"] ];

                image = [UIImage imageWithContentsOfFile:path];
                if(image != nil){

                    [self.images addObject:image];
                }

               return image;
        }
objective-c uiimagepickercontroller
2个回答
0
投票

您处于正确的轨道上,在保存按钮操作时,保存图像文档目录的特定路径并将图像名称保存在一个阵列中,您需要将其保存在核心数据或首选项中,而不是您喜欢的应用程序,如下所示。

NSString *strImageName = @"image.png"
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; 
NSString *filePath = [documentsPath stringByAppendingPathComponent: strImageName]; 
// Above you can give your custom path like @"App_Name/imageName" for unique identification

[pngData writeToFile:filePath atomically:YES];
[arrCoreData addObject: strImageName];

完成后(保存所有图像,然后优先保存图像名称),就像这样

NSData *data = [NSKeyedArchiver archivedDataWithRootObject: arrCoreData];
        [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyImageArray"];

当您想要获取图像并再次显示它时,您可以遵循以下流程:

NSData *mainCatData = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyImageArray"];
arrCoreData = [NSKeyedUnarchiver unarchiveObjectWithData:mainCatData];

然后使用这些图像名称,您可以取回图像并显示您想要的..

要从文档目录加载图像,您可以使用此功能

- (UIImage*)loadImage:(NSString)strImageName{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: @"AppName/%@", strImageName] ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
return image;
}

希望它能帮到你:)


0
投票

我做了它,并在我的应用程序上工作:)

 - (void)loadImage
    {   
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                             NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0]; 
        NSArray *fileArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];    
        for (int i=0; i<fileArray.count; i++) { 
            NSString* path = [documentsDirectory stringByAppendingPathComponent:fileArray[i]];           
            image = [UIImage imageWithContentsOfFile:path];
            [self.images addObject:image];
        }
    }

    -(IBAction)savebutton:(id)sender{
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory ,                                                          NSUserDomainMask , YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
        for (int i=0; i<_images.count; i++) {
            NSString* path = [documentsDirectory stringByAppendingPathComponent:
                              [NSString stringWithFormat: @"MyImages%d", i]];
            image=[_images objectAtIndex:i];
            NSData* data = UIImagePNGRepresentation(image);
            [data writeToFile:path atomically:YES];
            NSLog(@"saved");
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.