Supported GOOS: windows, darwin, linux, freebsd, openbsd, and netbsd.
cgo free except for GOOS=darwin.
example
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
coordinate
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
var ErrUnsupported = errors.New("screenshot does not support your platform")
ErrUnsupported is returned when the platform or architecture used to compile the program
does not support screenshot, e.g. if you're compiling without CGO on Darwin
Capture returns screen capture of specified desktop region.
x and y represent distance from the upper-left corner of primary display.
Y-axis is downward direction. This means coordinates system is similar to Windows OS.