以编程方式截图| Swift 3,macOS

是否可以使用Swift 3以编程方式为Mac上的桌面拍摄屏幕截图?我找不到关于该主题的单个主题或论坛帖子,甚至在Apple的官方文档中也找不到。

回答:

是的,它有可能。此功能获取所有连接的监视器的屏幕截图,并将其作为jpg文件写入指定的路径。生成文件名作为Unix时间戳。

 func TakeScreensShots(folderName: String){

var displayCount: UInt32 = 0;

var result = CGGetActiveDisplayList(0, nil, &displayCount)

if (result != CGError.success) {

print("error: \(result)")

return

}

let allocated = Int(displayCount)

let activeDisplays = UnsafeMutablePointer<CGDirectDisplayID>.allocate(capacity: allocated)

result = CGGetActiveDisplayList(displayCount, activeDisplays, &displayCount)

if (result != CGError.success) {

print("error: \(result)")

return

}

for i in 1...displayCount {

let unixTimestamp = CreateTimeStamp()

let fileUrl = URL(fileURLWithPath: folderName + "\(unixTimestamp)" + "_" + "\(i)" + ".jpg", isDirectory: true)

let screenShot:CGImage = CGDisplayCreateImage(activeDisplays[Int(i-1)])!

let bitmapRep = NSBitmapImageRep(cgImage: screenShot)

let jpegData = bitmapRep.representation(using: NSBitmapImageFileType.JPEG, properties: [:])!

do {

try jpegData.write(to: fileUrl, options: .atomic)

}

catch {print("error: \(error)")}

}

}

func CreateTimeStamp() -> Int32

{

return Int32(Date().timeIntervalSince1970)

}

以上是 以编程方式截图| Swift 3,macOS 的全部内容, 来源链接: utcz.com/qa/406631.html

回到顶部