Skip to content

Go library to capture desktop to image

License

Notifications You must be signed in to change notification settings

nmcbride/screenshot

 
 

Repository files navigation

screenshot

Build Status

  • Go library to capture desktop screen.
  • Support Windows, Mac, Linux, FreeBSD, OpenBSD, NetBSD, and Solaris environment.
  • Multiple display supported.
  • cgo free for Windows, Linux, FreeBSD, OpenBSD, NetBSD, and Solaris.

example

  • sample program main.go
package main

import (
  "github.com/audiolion/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

license

MIT Licence

author

kbinani audiolion

About

Go library to capture desktop to image

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 89.5%
  • Shell 10.5%