onmyway133 / blog

🍁 What you don't know is what you haven't learned
https://onmyway133.com/
MIT License
669 stars 33 forks source link

How to create Quick look thumbnail for files #913

Open onmyway133 opened 1 year ago

onmyway133 commented 1 year ago

Use QuickLookThumbnailing framework

import AppKit
import QuickLookThumbnailing

actor QuicklookService {
    static let shared = QuicklookService()

    private let generator = QLThumbnailGenerator.shared

    func image(
        fileUrl: URL,
        size: CGSize
    ) async -> NSImage {
        let scale = NSScreen.main?.backingScaleFactor ?? 2
        let request = QLThumbnailGenerator.Request(
            fileAt: fileUrl,
            size: size,
            scale: scale,
            representationTypes: .thumbnail
        )

        do {
            let representation = try await generator.generateBestRepresentation(for: request)
            return representation.nsImage
        } catch {
            return NSWorkspace.shared.icon(forFile: fileUrl.path)
        }
    }
}

Read more