从目标C中的本地文件夹读取图像
我需要从特定URL读取图像。从目标C中的本地文件夹读取图像
它在WWW中正常工作。但当指向本地文件夹的URL时它返回一个零。
// 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]];
您正在提供文件URL的相对路径名。该相对路径名相对于正在运行的应用程序的当前工作目录进行解释,该目录不保证是特别的,因此几乎肯定不是你想要的。
您可以提供绝对路径 - 以'/'开头 - 或者将您的应用程序的当前工作目录设置为明确的内容,例如用户的Documents文件夹。
你可能应该看看NSBundle类。 方法,如
- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension subdirectory:(NSString *)subpath
或
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension
可能是你想要什么
首先,你无法读取你给出这样的路径文件:“用户/用户2/...“,该文件必须在您的应用程序包或应用程序的沙箱中。
其次,如果有一些文本需要在URL中进行编码,请检查您的路径字符串。尝试:
NSURL *url = [NSURL URLWithString:[data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
而且,如果网址不为零,你也应该检查你的[NSData dataWithContentsOfURL:url];
将返回零。如果是这样,这意味着您的URL不正确,因此该方法找不到您的文件。
P.S.,您正在拍摄您的图片创建代码,您应该在imageWithData:
之前致电alloc
。
Xuzhe,其实我是试图从路径中读取。我试过它与捆绑它工作得很好。 – Shadowtech
你应该做的事希望得到当地网址:
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@", docDir, nameOfFile];
和finaly,载入图片:
UIImage *image = [UIImage imageWithContentsOfFile:pngFilePath];
它工作正常。 我改用dataWithContentsOfUrl。 谢谢。 – Shadowtech
尝试这些替代
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>
}
郭,它的工作原理 – Shadowtech
我需要从iPhoneSimulator的文档目录中读取图像 – Shadowtech
这将为您获取应用程序的Documents文件夹的绝对路径。它可以在模拟器和设备上运行:'[NSHomeDirectory()stringByAppendingPathComponent:@“Documents”]' –
它的作品..我正在使用 'NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); \t NSString * documentsDirectory = [路径objectAtIndex:0];' 感谢您简化我的代码.. – Shadowtech