是否有跨平台的方式来捕捉谷歌的Go屏幕?或者任何方式,但跨平台将是首选。在Go中捕获屏幕?
回答
不幸的是,没有图书馆来做到这一点。对于magickwand(C编程语言和ImageMagick图像处理库)有几个绑定,请参阅http://go-lang.cat-v.org/library-bindings,但这些是不完整的,并且没有屏幕捕获功能。
同时,如GeertJohan所建议的,您可以使用os.exec来运行外部程序并捕获屏幕(请参阅下面的示例代码)。例如,你可以使用import
命令从ImageMagick的捕获屏幕
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func main() {
var buf bytes.Buffer
path, err := exec.LookPath("import")
if err != nil {
log.Fatal("import not installed !")
}
fmt.Printf("import is available at %s\n", path)
cmd := exec.Command("import", "-window", "root", "root.png")
cmd.Stdout = &buf
cmd.Stderr = &buf
err = cmd.Run()
if err != nil {
panic(err)
}
fmt.Println(buf.String())
}
我不知道任何跨平台库(应该可以运行ImageMagick的一个平台上工作),但你可以用做当X服务器存在时,存储库为xgbutil。你可以看到一个example of how to capture a screenshot here。
如果你想在Mac/Windows系统上使用这个工具,我可能会先检查源代码为go.wde,其中包括Windows和Mac的后端。我怀疑你会直接找到代码来捕获截图,但它可能会给你一些提示或路径。
没有跨平台的方式捕获谷歌的Go屏幕,因为捕获屏幕依赖于底层操作系统的特定API。但有这样做的Go的库。
它是。这是一个两步过程:
研究https://github.com/ShareX/ShareX/tree/master/ShareX.ScreenCaptureLib看看哪个win32 API调用捕获屏幕/窗口 将该逻辑转换为Go。您可以使用少数现有的win32 api Go绑定之一(例如https://github.com/AllenDang/w32)。如果他们缺少必要的功能,可以添加更多的包装。
现在有:
https://github.com/vova616/screenshot
go get github.com/vova616/screenshot
例子:
package main
import "github.com/vova616/screenshot"
func main() {
img, err := screenshot.CaptureScreen() // *image.RGBA
myImg := image.Image(img) // can cast to image.Image, but not necessary
}
如果你需要MacOS的支持,以及(直到拉入请求合并),得到:
vova616 /截图还有另一个答案,但由于缺乏对macOS的支持,它还没有真正的跨平台。我最近实施了一个本地解决方案,希望它能尽快帮助更多的开发人员! – Kesarion
- 1. 屏幕捕获在IOS中
- 2. 捕获屏幕
- 3. 捕获屏幕
- 4. 登录屏幕中的屏幕捕获
- 5. 捕获android屏幕
- 6. PowerShell屏幕捕获
- 7. windows屏幕捕获
- 8. 屏幕捕获API
- 9. HTML5捕获屏幕
- 10. GLUT屏幕捕获在C
- 11. 在Android的屏幕捕获
- 12. 屏幕捕获的代码屏幕捕获Android的任何屏幕
- 13. 捕获屏幕图像而不捕获屏幕捕获垃圾邮件
- 14. 在C++中发送屏幕捕获流
- 15. 在Android中使用CoronaActivity捕获屏幕
- 16. 在MVC中捕获屏幕图像
- 17. 如何在wpf中捕获屏幕?
- 18. 在硒中捕获屏幕截图
- 19. 会话0捕获屏幕
- 20. 捕获屏幕截图
- 21. 捕获MKMapView屏幕截图
- 22. 屏幕捕获问题
- 23. ASP.NET - 捕获屏幕截图
- 24. 即时屏幕捕获Java
- 25. 使用CGDisplayStream捕获屏幕
- 26. Iphone屏幕视频捕获
- 27. 禁用屏幕捕获wp7
- 28. 使用SDL捕获屏幕?
- 29. Python屏幕捕获错误
- 30. 快速iphone屏幕捕获
在stackoverflow.com上,当你认为某些答案有帮助或解决了你的问题时,你应该加大它(按下三角形)或接受它(按下三角形下面的棒)。 – rputikar