不能与NSOpenPanel打开图像(can't open image with NSOpe

2019-09-16 20:17发布

我用下面的代码与NSOpenPanel开放的形象,但不工作

//panel=NSOpenPanel
 NSString *imgg = [NSString stringWithFormat:@"%@",panel.URL];
 self.imgUser.image=[NSImage imageNamed:imgg];

Answer 1:

的问题是,+ [NSImage中imageNamed:]不通过URL加载的图像。 如果你阅读文档,它解释了其实际作用:它查找存储在缓存下该名称,或者存储在应用程序的包或AppKit的的那个文件名框架下的图像。

有大量的方法来实际URL打开一个图像。 你可能寻找的是一个:

NSImage *image = [[[NSImage alloc] initWithContentsOfURL:panel.URL] autorelease];

此外,作为一个方面的问题,你试图把一个网址为路径的方式不正确。 如果您对文件中的NSURL://localhost/Users/user437064/Pictures/mypic.jpg,只是那转换为字符串只是给你@“文件://localhost/Users/user437064/Pictures/mypic.jpg”。 那是不是就可以与基于路径的API使用的路径。 你真正想要的是@“/用户/ user437064 /图片/ mypic.jpg”,你会得到的方式是 - [NSURL路径。 因此 “的NSString * imgg = [panel.URL路径];”。 但是,这是无关紧要的; 除非你需要处理很老版本的OS X的,或僻的API,有几乎总是需要一个网址为每个需要的路径,而且往往是基于路径的那些已被弃用方法的方法。

作为甚至更远,现成的枝节问题,你不需要stringWithFormat:的东西转换成字符串; “[panel.URL描述]”给出了完全相同的结果为“[的NSString stringWithFormat:@”%@“ panel.URL]”,更加简单和少量更有效。



文章来源: can't open image with NSOpenPanel