我需要从特定网址读取图片。
它适用于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]];
答案 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>
}