Rumah > pembangunan bahagian belakang > Golang > tangkapan skrin pelaksanaan golang

tangkapan skrin pelaksanaan golang

王林
Lepaskan: 2023-05-16 12:47:38
asal
1138 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, apabila orang ramai semakin bergantung kepada Internet, banyak industri telah mula berubah ke arah pendigitalan. Antaranya, permintaan untuk komunikasi rangkaian dan kerja jauh semakin meningkat dari hari ke hari, dan pelbagai alat persidangan dalam talian dan kerja jauh juga telah muncul. Untuk senario aplikasi ini, fungsi tangkapan skrin telah menjadi fungsi yang sangat diperlukan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Golang, bahasa pengaturcaraan yang berkuasa, untuk melaksanakan fungsi tangkapan skrin.

Pengenalan Golang
Golang, juga dikenali sebagai bahasa Go, ialah bahasa pengaturcaraan yang baru muncul Matlamat reka bentuknya adalah untuk mudah dipelajari, cekap dan pantas, sambil memastikan keselamatan dan kebolehpercayaan kod. Golang mempunyai mekanisme pengumpulan sampah dan primitif pengaturcaraan serentak, yang sangat sesuai untuk pembangunan aplikasi Internet.

Pelaksanaan tangkapan skrin Golang
Di Golang, melaksanakan fungsi tangkapan skrin terbahagi terutamanya kepada langkah berikut:

  1. Pertama, anda perlu memperkenalkan beberapa pakej yang diperlukan, seperti imej dan syscall tunggu.

import (

"image"
"os"
"syscall"
Salin selepas log masuk

)

  1. Seterusnya, anda perlu menggunakan fungsi sistem untuk mendapatkan maklumat tetingkap yang sedang berjalan dan mendapatkan tetingkap sistem pengendalian mengendalikan, dan kemudian anda boleh Tukar kepada objek imej dalam Golang.

func getScreenShot() ralat {

hwnd := syscall.GetForegroundWindow()
if hwnd == 0 {
    return fmt.Errorf("could not find foreground window")
}
dc := syscall.GetDC(hwnd)
defer syscall.ReleaseDC(hwnd, dc)
rect := &syscall.Rect{}
if !syscall.GetWindowRect(hwnd, rect) {
    return fmt.Errorf("could not get window rect")
}
width := rect.Right - rect.Left
height := rect.Bottom - rect.Top
img, err := image.NewRGBA(image.Rect(0, 0, width, height))
if err != nil {
    return err
}
return nil
Salin selepas log masuk

}

  1. Kemudian, anda perlu mendapatkan data imej daripada konteks peranti dan menyimpannya ke dalam Golang objek imej.

piksel := make([]uint8, lebartinggi4)
_, _, err = syscall.BitBlt(0, 0, lebar, tinggi, dc , 0, 0, syscall.SRCCOPY)
if err != nil {

return err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}
bi := &syscall.Bitmapinfo{}
bi.BmiHeader.BiSize = uint32(unsafe. Sizeof(bi.BmiHeader))
bi.BmiHeader.BiWidth = lebar;
bi.BmiHeader.BiHeight = -height;
bi.BmiHeader.BiPlanes = 1
bi.BmiHeader =.Bi2Count
bi.BmiHeader.BiCompression = syscall.BI_RGB
bi.BmiHeader.BiSizeImage = uint32(len(piksel))
jika _, _, err = syscall.GetDIBits(dc, syscall.HBITMAP(syscall.HBITMAP(syscall.HBITMAP(syscall.HBITMAP) GetStockObject(syscall.BLACK_BRUSH)), 0, uint32(ketinggian), &pixels[0], bi, 0); ketinggian; y++ {

return err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

Akhir sekali, simpan objek imej dalam Golang sebagai fail.

  1. fail, err := os.Create("screenshot.png")
  2. if err != nil {
for x := 0; x < width; x++ {
    i := (y*width + x) * 4
    R := pixels[i+2]
    G := pixels[i+1]
    B := pixels[i]
    img.Set(x, y, color.RGBA{R, G, B, 255})
}
Salin selepas log masuk

}
tunda fail.Close()

jika err = png.Encode(file, img != nil {

return err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

Pelaksanaan kod lengkap:

pakej utama

import (

return err
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

)

func getScreenShot() ralat {

"fmt"
"image"
"image/color"
"image/png"
"os"
"syscall"
"unsafe"
Salin selepas log masuk
}

func main() {

rreee

}

Kesimpulan

Artikel ini menggariskan cara menggunakan Golang untuk melaksanakan fungsi tangkapan skrin. Golang ialah bahasa pengaturcaraan yang cekap, mudah dan selamat dengan prestasi serentak yang baik dan sesuai untuk pelbagai senario aplikasi. Melalui pengenalan artikel ini, saya percaya bahawa pembaca telah menguasai kemahiran menggunakan Golang untuk melaksanakan fungsi tangkapan skrin saya harap artikel ini dapat membantu semua orang.

Atas ialah kandungan terperinci tangkapan skrin pelaksanaan 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