imageWithContentsOfFile不返回图像

时间:2014-07-15 19:25:12

标签: ios objective-c uiimage

UIImage * image = [UIImage imageWithContentsOfFile:filePath];

我以前曾经使用过这种方法一百次而且以前常常工作,但现在它只返回" Null",我用Google搜索,然后尝试了

            NSBundle *bundle = [NSBundle mainBundle];
            NSString *filePath = [bundle pathForResource:
                                   @"fileName" ofType:@"png"];
            UIImage *image=[UIImage imageWithContentsOfFile:filePath];

但它还没有工作, 也尝试使用

UIImage * image = [UIImage imageWithData:[NSData dataWithContentsOfFile:filePath]];

仍然得到" Null",

我无法使用方法

  UIImage *image=[UIImage imageNamed:@"image.png"];

因为我正在我的应用程序文档目录中下载#34; tmp"文件夹,然后使用我下载它们的路径然后尝试访问它,因此我需要这个方法" imageWithContentsOfFile:"拼命地工作

有人可以帮我解决这个问题吗...提前感谢您的帮助

3 个答案:

答案 0 :(得分:12)

不确定我遇到的问题是否与您的问题相同,但我们突然遇到这个问题,即在使用完整文件路径和使用imageWithContentsOfFilePath方法时,我们的图像为零。

我们经过一些调试后发现,NSHomeDirectory()(基本上是你的沙箱位置)现在每次启动都会发生变化。我们的问题是我们存储整个文件路径并在后续启动时尝试从同一个完整文件路径中检索它们,这些路径已不复存在。

例如,在一次启动时,您的主目录可能是:/ var / mobile / Containers / Data / Application / 844B1DDA-49AB-4B5C-AC76-2BBF1397B142但下一个会有所不同:/ var / mobile / Containers /数据/应用/ C620B610-3839-4134-9DF7-C5756F22BBCE。因此,如果存储文件路径以供将来使用,则必须在需要时确定文件路径的主目录部分,并只存储文件/映像的相对路径。

NSString *filePath = [NSString stringWithFormat:@"%@/%@", [self retrieveHomeDirectoryPath], relativeFileLocationPath];
UIImage *image = [UIImage imageWithContentsOfFile:filePath];

这里retrieveHomeDirectoryPath只返回NSHomeDirectory()或NSTemporaryDirectory()的结果,relativeFileLocationPath将是相对于该特定位置的路径。

答案 1 :(得分:0)

我猜你的导入有问题。 Xcode有时会做一些时髦的事情。

右键单击资源中的图像,然后删除并删除引用。重新导入并确保选择复制框。

这是我设置图片的方式。

self.someUIImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"somePictureThatExists.png"]];

或更简单:

self.someUIImageView = [UIImage imageNamed:@"somePictureThatExists.png"];

修改

当你遇到这样的问题时,我也会清理项目。

Command + Shift + K或Product>Clean

答案 2 :(得分:0)

由于您必须从文档目录中加载图像,因此首先使用以下代码访问它

NSArray  *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 

    NSUserDomainMask, YES);

    NSString *documentsDir  = [documentPaths objectAtIndex:0];

    NSString  *pngfile = [documentsDir stringByAppendingPathComponent:@"fileName.png"];

    & then apply filename to imageview like

     imageView.image=[UIImage imageWithData:[NSData dataWithContentsOfFile:pngfile]];

这里filename.png是您在Applications Document目录中保存的png文件的名称。