我使用下面的代码来打开带有NSOpenPanel的图像,但不起作用
//panel=NSOpenPanel
NSString *imgg = [NSString stringWithFormat:@"%@",panel.URL];
self.imgUser.image=[NSImage imageNamed:imgg];发布于 2012-04-28 02:14:37
问题是+NSImage :不能通过imageNamed加载图像。如果你阅读文档,它会解释它的实际作用:它查找以该名称存储在缓存中的图像,或以该文件名存储在应用程序的捆绑包或AppKit框架中的图像。
通过URL实际打开图像的方法有很多。你可能要找的是:
NSImage *image = [[[NSImage alloc] initWithContentsOfURL:panel.URL] autorelease];此外,作为一个次要问题,您试图将URL转换为路径的方式是不正确的。如果您有一个用于file://localhost/Users/user437064/Pictures/mypic.jpg,的NSURL,那么只需将其转换为字符串即可得到@"file://localhost/Users/user437064/Pictures/mypic.jpg".这不是一个可以与基于路径的API一起使用的路径。你真正想要的是@"/Users/user437064/Pictures/mypic.jpg",而你得到它的方式是-NSURL路径。所以"NSString *imgg = panel.URL路径;“。但这是无关紧要的;除非您需要处理非常旧的OS版本或特殊的API,否则几乎总是有一个方法为每个接受路径的方法获取一个URL,并且通常不推荐使用基于路径的方法。
作为一个更离谱的问题,你不需要stringWithFormat:来将一些东西转换成字符串;"panel.URL description“给出的结果与"NSString stringWithFormat:@”%@,panel.URL“完全相同,更简单,效率更高。
https://stackoverflow.com/questions/10355591
复制相似问题