go语言实现屏幕截图的示例代码

 更新时间:2022年04月22日 11:42:30   作者:Clown95  
屏幕截图在很多地方都可以 用到,本文主要介绍了go语言实现屏幕截图的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

借助第三方库

https://github.com/kbinani/screenshot

安装

go get github.com/kbinani/screenshot

方法

详情查看
https://pkg.go.dev/github.com/vova616/screenshot

自定义截图 Capture

func Capture(x, y, width, height int) (*image.RGBA, error)

返回指定桌面区域的屏幕截图。x,y是起点坐标, width,height 是图片的宽和高。

全屏截图 CaptureDisplay

func CaptureDisplay(displayIndex int) (*image.RGBA, error)

返回全屏截图。 displayIndex 是显示编号,默认屏幕是0,如果外接多个显示,则是1,2,3,4 … 。

获取活动显示器数量 NumActiveDisplays

func NumActiveDisplays()int

返回活动的显示器的数量。

获取指定屏幕显示范围 GetDisplayBounds

func GetDisplayBounds(displayIndex int) image.Rectangle

GetDisplayBounds返回displayIndex的显示范围, 范围从(0,0) 坐标开始,当前屏幕分辨率结束 ,例如:(0,0)-(1920,1080)。

获取自定义矩形区域的截图 CaptureRect

func CaptureRect(rect image.Rectangle) (*image.RGBA, error)

捕获桌面的指定区域。跟Capture类似,主要搭配GetDisplayBounds 使用。
参数是一个矩形,即两个点,一个最小点,一个最大点

演示

package main

import (
    "fmt"
    "github.com/kbinani/screenshot"
    "image"
    "image/png"
    "os"
)

// save *image.RGBA to filePath with PNG format.
func save(img *image.RGBA, filePath string) {
    file, err := os.Create(filePath)
    if err != nil {
        panic(err)
    }
    defer file.Close()
    png.Encode(file, img)
}
func main() {

    //自定义截图
    img, err := screenshot.Capture(0, 0, 500, 500)
    if err != nil {
        panic(err)
    }
    save(img, "自定义.png")

    //获取所有活动屏幕
    n := screenshot.NumActiveDisplays()
    if n <= 0 {
        panic("没有发现活动的显示器")
    }

    //全屏截取所有活动屏幕
    if n > 0 {
        for i := 0; i < n; i++ {
            img, err = screenshot.CaptureDisplay(i)
            if err != nil {
                panic(err)
            }
            fileName := fmt.Sprintf("第%d屏幕截图.png", i)
            save(img, fileName)
        }
    }

    //使用 Rectangle 自定义截图
    // 获取第一个屏幕显示范围
    var new image.Rectangle = image.Rect(0, 0, 600, 700)
    img, err = screenshot.CaptureRect(new)
    if err != nil {
        panic(err)
    }
    save(img, "new.png")

    //使用 GetDisplayBounds获取指定屏幕显示范围,全屏截图
    bounds := screenshot.GetDisplayBounds(0)
    img, err = screenshot.CaptureRect(bounds)
    if err != nil {
        panic(err)
    }
    save(img, "all.png")

    //使用Union获取指定屏幕 矩形最小点和最大点
    var all image.Rectangle = image.Rect(0, 0, 0, 0)
    bounds1 := screenshot.GetDisplayBounds(0)
    all = bounds1.Union(all)
    fmt.Println(all.Min.X, all.Min.Y, all.Dx(), all.Dy())

}

到此这篇关于go语言实现屏幕截图的示例代码的文章就介绍到这了,更多相关go语言屏幕截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Go 语言的指针的学习笔记

    Go 语言的指针的学习笔记

    这篇文章主要介绍了Go 语言的指针的学习笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 提升编程技能:学习如何在Go语言中正确格式化时间

    提升编程技能:学习如何在Go语言中正确格式化时间

    想知道如何在Go语言中轻松地格式化时间吗?别再浪费时间了!本文将带你快速入门,让你的代码更加优雅高效,快来学习吧!
    2024-01-01
  • go sync.Map基本原理深入解析

    go sync.Map基本原理深入解析

    这篇文章主要为大家介绍了go sync.Map基本原理深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 深入解析Go语言编程中slice切片结构

    深入解析Go语言编程中slice切片结构

    这篇文章主要介绍了Go语言编程中slice切片结构,其中Append方法的用法介绍较为详细,需要的朋友可以参考下
    2015-10-10
  • golang跳转语句goto,break,continue的使用及区别说明

    golang跳转语句goto,break,continue的使用及区别说明

    这篇文章主要介绍了golang跳转语句goto,break,continue的使用及区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • GO语言延迟函数defer用法详解

    GO语言延迟函数defer用法详解

    本文主要介绍了GO语言延迟函数defer用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Golang切片连接成字符串的实现示例

    Golang切片连接成字符串的实现示例

    本文主要介绍了Golang切片连接成字符串的实现示例,可以使用Go语言中的内置函数"String()"可以将字节切片转换为字符串,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 一文教你如何优雅处理Golang中的异常

    一文教你如何优雅处理Golang中的异常

    我们在使用Golang时,不可避免会遇到异常情况的处理,与Java、Python等语言不同的是,Go中并没有try...catch...这样的语句块,这个时候我们如何才能更好的处理异常呢?本文来教你正确方法
    2022-11-11
  • 使用Go语言实现发送HTTP请求并给GET添加参数

    使用Go语言实现发送HTTP请求并给GET添加参数

    在开发Web应用程序时,我们经常需要向服务器发送HTTP请求,本文将介绍一下使用Go语言发送HTTP请求,并给GET请求添加参数的方法,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Go chassis云原生微服务开发框架应用编程实战

    Go chassis云原生微服务开发框架应用编程实战

    这篇文章主要为大家介绍了Go chassis云原生微服务开发框架应用编程实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论