Google Goで画面をキャプチャするためのクロスプラットフォームの方法はありますか?それとも何らかの方法で、クロスプラットフォームが好ましいでしょう。Goで画面をキャプチャしますか?
答えて
私はこれを行うためのライブラリを見つけることができません。安定したクロスプラットフォームのスクリーンキャプチャには多くの作業が必要です。スクリーンキャプチャには、オペレーティングシステムのディスプレイマネージャ/サーバまたはフレームバッファとのインタフェースが必要です。これは、多くのオペレーティングシステムやLinuxディストリビューションでは異なります。各OS API用のインタフェースを作成するか、機能を提供するライブラリをラップしてから、すべての異なるメソッドを単一のパッケージに抽象化して、クロスプラットフォームで動作させる必要があります。
これを行うもう1つの方法は、既存のスクリーンキャプチャアプリケーション(コマンドライン)を実行してファイルを保存するなど、スクリーンキャプチャの作業を行うことです。その後、あなたの行くアプリケーションでファイルを読んでください。 Goアプリケーションでサードパーティアプリケーションを実行するには、標準ライブラリにあるos/execパッケージを使用します。 Linuxの場合は、fbgrabを使用して、フレームバッファをpngファイルに保存することができます。
残念ながら、これを行うライブラリはありません。 magickwand(Cプログラミング言語とImageMagick画像処理ライブラリ)にはいくつかのバインディングがありますが、http://go-lang.cat-v.org/library-bindingsを参照してください。これらは不完全で、画面キャプチャ機能はありません。
GeertJohanが提案したように、os.execを使用して外部プログラムを実行し、画面をキャプチャすることができます(下記のサンプルコードを参照)。たとえば、画面をキャプチャするのimagemagickから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())
}
私は、クロスプラットフォームのライブラリを知りませんが、あなたがこれを行うことができますXサーバが存在する場合はxgbutilライブラリ。 example of how to capture a screenshot hereが表示されます。
Mac/Windowsシステムでこれを動作させたい場合は、WindowsとMacのバックエンドを含むgo.wdeのソースを調べることから始めます。スクリーンショットをキャプチャするためのコードを直接見つけることはできませんが、いくつかのヒントやそれに従うべき道を与えるかもしれません。
キャプチャ画面は基本的なオペレーティングシステムの特定のAPIに依存しているため、クロスプラットフォームはありません方法 Google Goで画面をキャプチャします。しかし、これにはのライブラリがあります。
です。
Study https://github.com/ShareX/ShareX/tree/master/ShareX.ScreenCaptureLib画面/ウィンドウをキャプチャするwin32 API呼び出しを確認する そのロジックをGoに変換します。いくつかの既存のwin32 api Goバインディング(例えば、https://github.com/AllenDang/w32)の1つを使用することができます。必要な機能が不足している場合は、さらにラッパーを追加できます。
今そこにある:
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のサポートが必要な場合は、GET:
あなたには、いくつかの答えは便利ですか、あなたの問題を解決して考えるときstackoverflow.comに
はvova616 /スクリーンショットで別の答えがあるのですが、それがためにMacOSのためのサポートの欠如の真のクロスプラットフォームされていません。私は最近、ネイティブのソリューションを実装し、それはすぐに多くの開発者を支援することを願っていました! – Kesarion
- 1. SDLで画面をキャプチャしますか?
- 2. ココア画面キャプチャ?
- 3. キャプチャ画面
- 4. CGDisplayStreamで画面をキャプチャ
- 5. スクロールでは、画面の最後のテキストをキャプチャしますか?
- 6. HTML5のキャプチャ画面
- 7. AppleScriptでの画面キャプチャ
- 8. C++でのD3D11画面キャプチャ
- 9. マルチタッチ画面でダブルタップをキャプチャする
- 10. エミュレータの画面(アンドロイド)をキャプチャ:
- 11. ステータスバーを含むiPhone画面をキャプチャしますか?
- 12. 空白がない画面をキャプチャしますか?
- 13. UIImagePickerControllerはiphoneで全画面をキャプチャします
- 14. ロボットを使用したJavaFXキャプチャ画面
- 15. 画面キャプチャ方法は
- 16. MEmuエミュレータ画面のキャプチャ
- 17. 共有画面キャプチャIOS5
- 18. C#キャプチャ直接3D画面
- 19. chrome.desktopキャプチャ - リモート画面共有
- 20. 画面キャプチャC#ASP.NET Webアプリケーション
- 21. キャプチャ画面のCore Animationは
- 22. メインウィンドウのない画面キャプチャ
- 23. AutoITでサイレントに画面をキャプチャ
- 24. twilioで録画機能付きの画面キャプチャを構築できますか?
- 25. Windowsサービスからの画面キャプチャ
- 26. Visual Basic RBG画面からキャプチャ
- 27. vb.netの画面キャプチャを検出する
- 28. 、私は画面をキャプチャするRenderTextureを使用しますが、私は、画面をキャプチャした後scrollviewの画像がで
- 29. 画面をキャプチャして画面情報を検出する方法
- 30. Adobe Flexでのウィンドウ画面キャプチャ?
、あなたはそれ(プレスアップ三角形)をupvoteか(下の三角形の下のスティックプレス)それを受け入れる必要があります。 – rputikar