给定应用程序的完整路径或 NSBundle 实例,如何获取其图标?
Posted
技术标签:
【中文标题】给定应用程序的完整路径或 NSBundle 实例,如何获取其图标?【英文标题】:Given the full path or an NSBundle instance of an application, how do you get its icon? 【发布时间】:2018-04-23 21:24:54 【问题描述】:如果我有应用程序包的完整路径或该应用程序的 NSBundle
实例,我如何获得该应用程序图标的 NSImage
表示?
具体来说,我想为一组特定尺寸获得最佳可用版本的图标。例如,如果应用图标的可用版本包括尺寸 32x32、64x64 和 128x128 点,如果我请求一个 96x96 点的图标,我将获得 128x128 版本。
这需要同时在视网膜和非视网膜显示器上工作,因此生成的NSImage
必须包含图标的视网膜和非视网膜表示。
我找到了 NSWorkspace
的 iconForFile:
方法,但不幸的是它只返回一个 32x32 像素的图标,所以这对我的目的没有用。
我还可以从其信息字典中读取捆绑包的 CFBundleIconFile
和 CFBundleIconName
键,然后从其 icns 文件或资产目录中提取正确的图像,但这似乎需要做很多工作。我不知道从哪里开始从这些文件类型中获取图像。我希望有一个更简单的方法!
【问题讨论】:
【参考方案1】:我对@987654321@ 的看法不正确。虽然它返回的 NSImage 确实报告其大小为 32x32,但它包含该应用程序的所有各种图标大小的图像表示,包括更大的图标。选择我想要的,或者使用bestRepresentationForRect:context:hints:
方法是一件简单的事情。
【讨论】:
以上是关于给定应用程序的完整路径或 NSBundle 实例,如何获取其图标?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?