【发布时间】:2013-05-14 13:22:12
【问题描述】:
我正在使用 NSWorkspace 类的 iconForFile: 选择器,但它返回的图像质量很低。
谁能告诉我为什么会这样?是否有任何开关或标志来告诉框架以不同的格式返回图像?
【问题讨论】:
标签: objective-c macos finder
我正在使用 NSWorkspace 类的 iconForFile: 选择器,但它返回的图像质量很低。
谁能告诉我为什么会这样?是否有任何开关或标志来告诉框架以不同的格式返回图像?
【问题讨论】:
标签: objective-c macos finder
文档声明返回的图标大小为 32x32,但您可以使用 -[NSImage setSize:],它可能会加载更大的表示:
NSImage * iconImage = [[NSWorkspace sharedWorkspace] iconForFile:file];
[iconImage setSize:NSMakeSize(128, 128)];
您还可以使用图标服务(例如 GetIconRefFromFileInfo)或 QuickLook(例如 QLThumbnailImageCreate)来获取更大尺寸的文件图标或预览图标。
【讨论】:
-[NSImage setSize:]——更新了答案。我仍然使用图标服务。避免使用过时的东西。
setSize: 以获得快速解决方案,除非您还想要多线程加载。
一个 Swift 扩展,可让您使用 Justin 的解决方案定义所需的高度(宽度)
extension NSWorkspace {
func icon(for url: URL, height: Int) -> NSImage {
let image = icon(forFile: url.path)
image.size = NSSize(width: height, height: height)
return image
}
}
【讨论】: