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:
import (
"image" "os" "syscall"
)
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
}
piksel := make([]uint8, lebartinggi4)
_, _, err = syscall.BitBlt(0, 0, lebar, tinggi, dc , 0, 0, syscall.SRCCOPY)
if err != nil {
return err
}
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
}
Akhir sekali, simpan objek imej dalam Golang sebagai fail.
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}) }
}
tunda fail.Close()
return err
return err
"fmt" "image" "image/color" "image/png" "os" "syscall" "unsafe"
rreee
}KesimpulanArtikel 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!