macOS截图CGDisplayCreateImage
macOS截图CGDisplayCreateImage

macOS截图CGDisplayCreateImage

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+):苹果新推荐的方式,适合高频截屏或视频采集。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注