【问题标题】:NSWorkspace iconForFile: returns image of low qualityNSWorkspace iconForFile:返回低质量的图像
【发布时间】:2013-05-14 13:22:12
【问题描述】:

我正在使用 NSWorkspace 类的 iconForFile: 选择器,但它返回的图像质量很低。

谁能告诉我为什么会这样?是否有任何开关或标志来告诉框架以不同的格式返回图像?

【问题讨论】:

    标签: objective-c macos finder


    【解决方案1】:

    文档声明返回的图标大小为 32x32,但您可以使用 -[NSImage setSize:],它可能会加载更大的表示:

    NSImage * iconImage = [[NSWorkspace sharedWorkspace] iconForFile:file];
    [iconImage setSize:NSMakeSize(128, 128)];
    

    您还可以使用图标服务(例如 GetIconRefFromFileInfo)或 QuickLook(例如 QLThumbnailImageCreate)来获取更大尺寸的文件图标或预览图标。

    【讨论】:

    • 我找不到使用参数 setSize 覆盖该函数。你能指点我纠正文件吗? (我在看 NSWorkspace 标题)
    • 另外,在您看来,您认为图标服务是在 finder 中搜索对图标覆盖的支持的好地方吗?
    • @user2381688 抱歉,这是-[NSImage setSize:]——更新了答案。我仍然使用图标服务。避免使用过时的东西。
    • 好的,谢谢,我会尝试图标服务 api 并调整图像大小。再次感谢您的帮助。
    • @user2381688 好的 - 首先尝试setSize: 以获得快速解决方案,除非您还想要多线程加载。
    【解决方案2】:

    一个 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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 2014-10-14
      • 2019-08-23
      • 2014-12-24
      • 2017-08-03
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多