首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用NSOpenPanel打开图像

无法使用NSOpenPanel打开图像
EN

Stack Overflow用户
提问于 2012-04-28 01:59:52
回答 1查看 786关注 0票数 0

我使用下面的代码来打开带有NSOpenPanel的图像,但不起作用

代码语言:javascript
复制
//panel=NSOpenPanel
 NSString *imgg = [NSString stringWithFormat:@"%@",panel.URL];
 self.imgUser.image=[NSImage imageNamed:imgg];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-28 02:14:37

问题是+NSImage :不能通过imageNamed加载图像。如果你阅读文档,它会解释它的实际作用:它查找以该名称存储在缓存中的图像,或以该文件名存储在应用程序的捆绑包或AppKit框架中的图像。

通过URL实际打开图像的方法有很多。你可能要找的是:

代码语言:javascript
复制
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“完全相同,更简单,效率更高。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10355591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档