从Objective C中的本地文件夹中读取图像

时间:2011-08-29 06:59:23

标签: iphone objective-c

我需要从特定网址读取图片。

它适用于WWW。但是当指向本地文件夹的URL时它返回nil。

// Works 
NSString *sampleData = @"http://blogs-images.forbes.com/ericsavitz/files/2011/05/apple-logo2.jpg";

// Returns nil 
NSString *sampleData = @"USER/user2/...";

注意:  我正在将NSString更改为NSURL并创建UIImage。

NSURL *url = [NSURL URLWithString: data];

UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

5 个答案:

答案 0 :(得分:1)

你可能应该看一下NSBundle类。 像

这样的方法

- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension subdirectory:(NSString *)subpath

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension

可能就是你想要的

答案 1 :(得分:1)

您正在提供文件URL的相对路径名。该相对路径名相对于正在运行的应用程序的当前工作目录进行解释,并不保证特别是任何东西,因此几乎肯定不是您想要的。

您可以提供绝对路径 - 以“/”开头的路径 - 或者将应用的当前工作目录设置为显式内容,例如用户的“文档”文件夹。

答案 2 :(得分:0)

首先,您无法从您给出的路径中读取文件:“USER / user2 / ...”,该文件必须位于App捆绑包或App的沙箱中。

其次,如果某些文本需要在URL中编码,请检查您的路径字符串。尝试:

NSURL *url = [NSURL URLWithString:[data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

此外,如果网址不是nil,您还应该检查[NSData dataWithContentsOfURL:url];是否返回nil。如果是这样,则表示您的网址不正确,因此该方法无法找到您的文件。

P.S。,您错误地创建了图片创建代码,您应该在alloc之前致电imageWithData:

答案 3 :(得分:0)

你应该做一些类似于获取本地网址的内容:

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@", docDir, nameOfFile];

最后,加载你的图片:

UIImage *image = [UIImage imageWithContentsOfFile:pngFilePath];

答案 4 :(得分:0)

尝试这些

NSString *path =   @"USER/user2/.../xxx.xxx";
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isFileExist = [fileManager fileExistsAtPath:path];
UIImage *image;
if (isFileExist) {
    image = [[UIImage alloc] initWithContentsOfFile:path];
}
else {
    // do something.<br>
}