无法从iPhone设备文件夹中获取图像

时间:2011-07-22 17:29:59

标签: iphone objective-c uiimage device nsurl

我正试图从设备(iPhone)中获取一些图像并将其显示在屏幕上。

图像文件保存在我的设备上,并在文件夹中分隔如下:(...)/ Documents / 1 / image1.png。

这是我正在尝试获取图像的函数的代码

-(UIImage *) getImageFromDevice:(NSString *) fileName 
                        idImage:(int)        idImage{

    NSString *path;

    path = [[self dataFilePath] stringByAppendingString:@"/"];
    path = [path stringByAppendingString: [[NSString alloc] initWithFormat:@"%d",idImage]];
    path = [path stringByAppendingString:@"/"];
    path = [path stringByAppendingString:fileName];

    NSLog(@"path = %@", path);

    NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path];
    NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl];
    UIImage *deviceImage = [UIImage imageWithData:imageData];

    return deviceImage;

}

这是获取正常工作的设备文件夹路径的函数:

-(NSString *)dataFilePath{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    return documentsDirectory;

}

但是当我用 [[NSURL alloc] initWithString:path] 设置 NSURL * deviceImageUrl 时,deviceImageUrl变为 nil < / strong>即可。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

//NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path];
//NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl];
//UIImage *deviceImage = [UIImage imageWithData:imageData];    
UIImage *deviceImage = [[[UIImage alloc] initWithContentsOfFile:path]autorelease];

答案 1 :(得分:1)

尝试使用fileURLWithPath:而不是URLWithString:;)

NSURL *deviceImageUrl = [NSURL fileURLWithPath:path]; // autoreleased url

我总是搞砸了这两种方法......它们让我疯狂。

答案 2 :(得分:0)

您不应该使用initWithString :,这必须符合RFC中描述的URL格式。如果您只想使用系统路径,请使用:(不要忘记在使用后释放)

NSURL *deviceImageUrl = [[NSURL alloc] initFileURLWithPath:path isDirectory:NO];