CGDisplayCreateImage 是 macOS 的 Core Graphics 框架(Quartz)中提供的一个函数,用于截取整个显示器(屏幕)的图像。
func CGDisplayCreateImage(_ displayID: CGDirectDisplayID) -> CGImage?
displayID:CGDirectDisplayID类型,显示器的唯一标识符。可以通过 CGMainDisplayID() 获取主显示器的 ID。
如果成功,返回一个可选的 CGImage(即屏幕的截图)。若失败,返回 nil。
使用示例
import Cocoa
import CoreGraphics
if let cgImage = CGDisplayCreateImage(CGMainDisplayID()) {
let bitmapRep = NSBitmapImageRep(cgImage: cgImage)
// 保存或显示 nsImage
let imageData = bitmapRep.representation(using: .png, properties: [:])
try? imageData?.write(to: URL(fileURLWithPath: "/Users/you/Desktop/screenshot.png"))
}
截取整个显示屏的图像(不包括鼠标光标),用于实现全屏截图功能。

注意事项
1、沙盒限制:如果应用开启了 App Sandbox,调用方法时会提示用户,需要授权“录屏与系统录音”。

如果用户没有授权,全屏截图只会截取背景和左上角菜单栏,不会截取Dock栏。

如果用户未授权“录屏与系统录音”,应用不会收到报错,只能截取桌面背景,无法看到其他App的内容。
2、多屏幕支持:可以遍历多个 CGDirectDisplayID 截取多个屏幕。
3、保存到桌面:可以使用NSSavePanel将文件保存到桌面。
总结
CGDisplayCreateImage可以实现全屏截图
还可以使用CGWindowListCreateImage(…):截取特定窗口、选区或所有窗口。
ScreenCaptureKit(macOS 12+):苹果新推荐的方式,适合高频截屏或视频采集。