- Go library to capture desktop screen.
- Multiple display supported.
- Supported GOOS: windows, darwin, linux, freebsd, openbsd, and netbsd.
cgo
free except for GOOS=darwin.
-
sample program
main.go
package main import ( "github.com/kbinani/screenshot" "image/png" "os" "fmt" ) func main() { n := screenshot.NumActiveDisplays() for i := 0; i < n; i++ { bounds := screenshot.GetDisplayBounds(i) img, err := screenshot.CaptureRect(bounds) if err != nil { panic(err) } fileName := fmt.Sprintf("%d_%dx%d.png", i, bounds.Dx(), bounds.Dy()) file, _ := os.Create(fileName) defer file.Close() png.Encode(file, img) fmt.Printf("#%d : %v \"%s\"\n", i, bounds, fileName) } }
-
output example
$ go run main.go #0 : (0,0)-(1280,800) "0_1280x800.png" #1 : (-293,-1440)-(2267,0) "1_2560x1440.png" #2 : (-1373,-1812)-(-293,108) "2_1080x1920.png" $ ls -1 0_1280x800.png 1_2560x1440.png 2_1080x1920.png main.go
Y-axis is downward direction in this library. The origin of coordinate is upper-left corner of main display. This means coordinate system is similar to Windows OS
MIT Licence
kbinani