Có một cách đa nền tảng để chụp màn hình trong Google Go không? Hoặc bất kỳ cách nào cho vấn đề đó, nhưng nền tảng chéo sẽ được ưa thích hơn.Chụp màn hình trong Go?
Trả lời
Tôi không thể tìm thấy thư viện để thực hiện việc này. Chụp màn hình nền tảng ổn định đòi hỏi nhiều công việc. Việc chụp màn hình yêu cầu giao tiếp với trình quản lý hiển thị/máy chủ hoặc bộ đệm khung của hệ điều hành, điều này khác với nhiều hệ điều hành và bản phân phối Linux. Bạn sẽ phải viết các giao diện cho mỗi API OS (hoặc bọc các thư viện cung cấp chức năng), và sau đó trừu tượng tất cả các phương thức khác nhau trong một gói duy nhất để nó hoạt động trên nhiều nền tảng.
Cách khác để thực hiện việc này là chạy ứng dụng chụp màn hình hiện có (dòng lệnh) để thực hiện công việc chụp màn hình cho bạn, bao gồm lưu vào tệp. Sau đó đọc tệp trong ứng dụng của bạn. Để làm cho một ứng dụng Go chạy một ứng dụng của bên thứ ba, sử dụng gói os/exec, nó nằm trong thư viện chuẩn. Đối với Linux, bạn có thể sử dụng fbgrab để lưu bộ đệm khung thành tệp png.
Thật không may, không có thư viện nào để thực hiện việc này. Có một vài ràng buộc đối với magickwand (ngôn ngữ lập trình C và thư viện xử lý hình ảnh ImageMagick), xem http://go-lang.cat-v.org/library-bindings nhưng các tính năng này không đầy đủ và không có tính năng chụp màn hình.
Trong khi GeertJohan đề xuất, bạn có thể sử dụng os.exec để chạy chương trình bên ngoài và chụp màn hình (xem mã mẫu bên dưới). Ví dụ, bạn có thể sử dụng import
lệnh từ ImageMagick để chụp màn hình (nên làm việc trên một nền tảng có thể chạy ImageMagick)
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func main() {
var buf bytes.Buffer
path, err := exec.LookPath("import")
if err != nil {
log.Fatal("import not installed !")
}
fmt.Printf("import is available at %s\n", path)
cmd := exec.Command("import", "-window", "root", "root.png")
cmd.Stdout = &buf
cmd.Stderr = &buf
err = cmd.Run()
if err != nil {
panic(err)
}
fmt.Println(buf.String())
}
Tôi không biết về bất kỳ thư viện cross-platform, nhưng bạn có thể làm điều này với xgbutil thư viện khi có máy chủ X. Bạn có thể thấy example of how to capture a screenshot here.
Nếu bạn muốn làm việc này trên hệ thống Mac/Windows, tôi có thể bắt đầu bằng cách kiểm tra nguồn cho go.wde, bao gồm các chương trình phụ trợ cho Windows và Mac. Tôi nghi ngờ bạn sẽ trực tiếp tìm thấy mã để chụp một ảnh chụp màn hình trong đó, nhưng nó có thể cung cấp cho bạn một số gợi ý hoặc một con đường để làm theo.
Không có nền tảng cách để chụp màn hình trong Google, vì màn hình chụp dựa trên API cụ thể của hệ điều hành cơ bản. Nhưng có thư viện cho Go để thực hiện việc này.
Đó là. Đó là quy trình gồm 2 bước:
Nghiên cứu https://github.com/ShareX/ShareX/tree/master/ShareX.ScreenCaptureLib để xem cuộc gọi API win32 nào cần thực hiện để chụp màn hình/cửa sổ Dịch logic đó thành Go. Bạn có thể sử dụng một trong số ít các liên kết win32 api Go hiện có (ví dụ: https://github.com/AllenDang/w32). Nếu họ thiếu chức năng cần thiết, bạn có thể thêm trình bao bọc khác.
Bây giờ có:
https://github.com/vova616/screenshot
go get github.com/vova616/screenshot
Ví dụ:
package main
import "github.com/vova616/screenshot"
func main() {
img, err := screenshot.CaptureScreen() // *image.RGBA
myImg := image.Image(img) // can cast to image.Image, but not necessary
}
Nếu bạn cần hỗ trợ hệ điều hành MacOS cũng như (đến khi yêu cầu kéo là bị sáp nhập), nhận được:
Có một câu trả lời khác với vova616/ảnh chụp màn hình, nhưng nó không thực sự đa nền tảng vì thiếu sự hỗ trợ cho macOS. Gần đây, tôi đã triển khai giải pháp gốc và hy vọng nó sẽ sớm giúp các nhà phát triển! – Kesarion
- 1. Chụp màn hình trong android
- 2. html5 chụp màn hình
- 3. Chụp màn hình
- 4. Ảnh chụp màn hình Webdriver
- 5. Chụp màn hình màn hình hiện tại của thiết bị
- 6. Lớp phủ màn hình cho ảnh chụp màn hình
- 7. iOS Ảnh chụp màn hình một phần của màn hình
- 8. Chụp màn hình của màn hình Hiện tại
- 9. Ảnh chụp màn hình OpenGL Android
- 10. Chụp màn hình của điều khiển WebBrowser
- 11. beamer includegraphics với ảnh chụp màn hình
- 12. Chụp màn hình vào một ảnh bitmap
- 13. Chụp ảnh màn hình với C \ GTK
- 14. Ảnh chụp màn hình bị rò rỉ?
- 15. Chụp màn hình cửa hàng Windows App
- 16. iPad 3 ảnh chụp màn hình chậm
- 17. Cách chụp một phần của màn hình
- 18. Chụp ảnh màn hình của Android OpenGL
- 19. Android chụp màn hình theo chương trình
- 20. Công cụ chụp màn hình cho BlackBerry?
- 21. Chụp màn hình Windows với ffmpeg
- 22. Trì hoãn ảnh chụp màn hình iOS
- 23. Chụp màn hình trang web có JavaScript?
- 24. Vô hiệu hóa ảnh chụp màn hình trong android ics
- 25. Cách chụp ảnh màn hình bằng VBScript trong TestComplete?
- 26. Chụp ảnh màn hình trong C++ trên OSX
- 27. Đường dẫn đến ảnh chụp màn hình trong Android
- 28. Video chụp màn hình trong iOS theo chương trình
- 29. ViewPager trong Android đang chụp toàn màn hình?
- 30. Làm cách nào để chụp nhanh màn hình trong Java?
Trên stackoverflow.com, khi bạn nghĩ rằng một số câu trả lời là hữu ích hoặc giải quyết vấn đề của bạn, bạn nên upvote nó (nhấn tam giác lên) hoặc chấp nhận nó (nhấn thanh dưới tam giác xuống). – rputikar