Maison  >  Article  >  développement back-end  >  Comment prendre des captures d'écran dans Golang

Comment prendre des captures d'écran dans Golang

PHPz
PHPzoriginal
2023-04-23 10:09:351436parcourir

Golang est un langage de programmation populaire utilisé pour développer des services et des applications Web efficaces. Prendre des captures d'écran est une compétence très utile pendant le processus de développement, cela permet de vérifier le code ou de partager les résultats. Cet article explique comment utiliser Golang pour prendre des captures d'écran.

Dans Golang, nous pouvons utiliser des bibliothèques tierces pour implémenter des captures d'écran. Les bibliothèques les plus populaires sont mitchellh/go-ps et kbinani/screenshot. mitchellh/go-ps est utilisé pour obtenir des informations sur le processus et peut être utilisé pour trouver l'ID du processus qui doit être capturé, tandis que kbinani/screenshot est utilisé pour prendre des captures d'écran.

Tout d’abord, nous devons importer ces bibliothèques. Nous pouvons les installer en exécutant simplement la commande suivante dans le terminal :

go get github.com/mitchellh/go-ps
go get github.com/kbinani/screenshot

Maintenant, nous pouvons utiliser la bibliothèque mitchellh/go-ps pour obtenir la liste des processus en cours d'exécution. Nous pouvons le faire en utilisant l'extrait de code suivant :

processes, err := ps.Processes()
if err != nil {
    panic(err)
}
for _, process := range processes {
    fmt.Println(process.Pid(), process.Executable())
}

Ce code imprimera l'ID et le nom de l'exécutable de tous les processus en cours d'exécution. Nous pouvons les filtrer selon nos besoins.

Ensuite, nous devons déterminer la zone d'écran que nous voulons capturer. Nous pouvons obtenir la résolution actuelle de l'écran en utilisant la fonction Size() de kbinani/screenshot. Nous pouvons également définir manuellement la zone que nous devons intercepter.

bounds := image.Rect(0, 0, 800, 600) // 截取区域左上角和右下角坐标
img, err := screenshot.CaptureRect(bounds)
if err != nil {
    panic(err)
}

Ce code capturera une capture d'écran dans une zone donnée et la stockera dans la variable img. Nous pouvons l'enregistrer sous forme de fichier PNG en utilisant le package image/png.

file, err := os.Create("screenshot.png")
if err != nil {
    panic(err)
}
defer file.Close()
err = png.Encode(file, img)
if err != nil {
    panic(err)
}

L'exemple de code complet est le suivant :

package main

import (
    "fmt"
    "image"
    "image/png"
    "os"

    "github.com/kbinani/screenshot"
    "github.com/mitchellh/go-ps"
)

func main() {
    // 获取进程列表
    processes, err := ps.Processes()
    if err != nil {
        panic(err)
    }
    for _, process := range processes {
        fmt.Println(process.Pid(), process.Executable())
    }

    // 截取屏幕截图
    bounds := image.Rect(0, 0, 800, 600)
    img, err := screenshot.CaptureRect(bounds)
    if err != nil {
        panic(err)
    }

    // 将截图保存到PNG文件中
    file, err := os.Create("screenshot.png")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    err = png.Encode(file, img)
    if err != nil {
        panic(err)
    }

    fmt.Println("截图已保存到screenshot.png文件中")
}

Grâce à l'introduction de cet article, j'espère que vous maîtrisez les compétences nécessaires pour prendre des captures d'écran à l'aide de Golang. Les captures d'écran sont un outil très utile lors du développement d'applications. Par conséquent, vous pouvez utiliser cette technique pour rationaliser votre flux de travail.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn