我正试图从设备(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>即可。
我做错了什么?
答案 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];