首页 > 解决方案 > 将图像文件保存在文档目录中并从中获取图像文件并在 Objective C 中的视图上显示

问题描述

我试图将图像文件保存在文档目录中,并通过 imageView 让文件显示在视图中。但是在保存图像后,当我从文档目录中获取图像时,我得到的值为 null。

- (IBAction)showImage:(id)sender {

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSLog(@"path: %@", path);
    NSString *documentsDirectory = [path objectAtIndex:0];
    NSLog(@"documentsDirectory: %@", documentsDirectory);
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"nature1.jpg"];
    NSLog(@"imagePath: %@", imagePath);
    NSData *imgData = [NSData dataWithContentsOfFile:imagePath];
//    NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imagePath]];
    [imgData writeToFile: imagePath atomically: YES];
    NSLog(@"imgData: %@", imgData);
    UIImage *showImg = [[UIImage alloc] initWithData:imgData];
//    DocumentDirectoryImage.image = showImg;
}



Getting value on console : 
imagePath: /Users/vikas.patil/Library/Developer/CoreSimulator/Devices/88A6BD16-9A62-4D9D-9852-5EA2E374060A/data/Containers/Data/Application/16083D44-0BFD-4CE6-8D4E-06A51EB908C1/Documents/nature1.jpg
2019-08-12 13:17:07.173 Assignment15[2270:107222] imgData: (null)

标签: iosobjective-c

解决方案


请先将图像保存在文档目录中,然后尝试从同一链接获取数据。您的代码将在稍作更改后看起来像。

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
        NSLog(@"path: %@", path);
        NSString *documentsDirectory = [path objectAtIndex:0];
        NSLog(@"documentsDirectory: %@", documentsDirectory);
        NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"nature1.jpg"];
        NSLog(@"imagePath: %@", imagePath);

    //    NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imagePath]];
        NSData *imageData = UIImagePNGRepresentation(yourImage);
        [imageData writeToFile: imagePath atomically: YES];
        NSData *imgData = [NSData dataWithContentsOfFile:imagePath];
        NSLog(@"imgData: %@", imgData);
        UIImage *showImg = [[UIImage alloc] initWithData:imgData];

推荐阅读