Rumah > pembangunan bahagian belakang > Golang > Cara mengambil tangkapan skrin dalam golang

Cara mengambil tangkapan skrin dalam golang

PHPz
Lepaskan: 2023-04-23 15:06:37
asal
1530 orang telah melayarinya

Golang ialah bahasa pengaturcaraan popular yang digunakan untuk membangunkan perkhidmatan dan aplikasi web yang cekap. Mengambil tangkapan skrin adalah kemahiran yang sangat berguna semasa proses pembangunan, ia membantu untuk menyemak kod atau berkongsi hasilnya. Artikel ini akan memperkenalkan cara menggunakan Golang untuk mengambil tangkapan skrin.

Di Golang, kami boleh menggunakan perpustakaan pihak ketiga untuk melaksanakan tangkapan skrin. Perpustakaan yang paling popular ialah mitchellh/go-ps dan kbinani/screenshot. mitchellh/go-ps digunakan untuk mendapatkan maklumat proses dan boleh digunakan untuk mencari ID proses yang perlu di screenshot, manakala kbinani/screenshot digunakan untuk mengambil screenshot.

Pertama, kita perlu mengimport perpustakaan ini. Kita boleh memasangnya dengan hanya menjalankan arahan berikut dalam terminal:

go get github.com/mitchellh/go-ps
go get github.com/kbinani/screenshot
Salin selepas log masuk

Sekarang, kita boleh menggunakan perpustakaan mitchellh/go-ps untuk mendapatkan senarai proses yang sedang berjalan. Kita boleh melakukan ini menggunakan coretan kod berikut:

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

Kod ini akan mencetak ID dan nama boleh laku semua proses yang sedang berjalan. Kita boleh menapisnya mengikut keperluan.

Seterusnya, kita perlu menentukan kawasan skrin yang ingin kita tangkap. Kita boleh mendapatkan resolusi skrin semasa menggunakan fungsi Size() kbinani/screenshot. Kami juga boleh menentukan secara manual kawasan yang kami perlukan untuk memintas.

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

Kod ini akan menangkap tangkapan skrin dalam kawasan tertentu dan menyimpannya dalam pembolehubah img. Kita boleh menyimpannya sebagai fail PNG menggunakan pakej imej/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)
}
Salin selepas log masuk

Contoh kod lengkap adalah seperti berikut:

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文件中")
}
Salin selepas log masuk

Melalui pengenalan artikel ini, saya harap anda telah menguasai kemahiran mengambil tangkapan skrin menggunakan Golang. Tangkapan skrin ialah alat yang sangat berguna semasa membangunkan aplikasi. Oleh itu, anda boleh menggunakan teknologi ini untuk menyelaraskan aliran kerja anda.

Atas ialah kandungan terperinci Cara mengambil tangkapan skrin dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan