//go:build !darwin package screen import ( "bytes" "encoding/base64" "fmt" "image/jpeg" "github.com/kbinani/screenshot" ) // CaptureScreen chụp màn hình chính và trả về chuỗi Base64 dạng "data:image/jpeg;base64,..." // Non-darwin: dùng kbinani/screenshot func CaptureScreen() (string, error) { n := screenshot.NumActiveDisplays() if n <= 0 { return "", fmt.Errorf("no active displays found") } // Chụp màn hình chính (index 0) bounds := screenshot.GetDisplayBounds(0) img, err := screenshot.CaptureRect(bounds) if err != nil { return "", fmt.Errorf("failed to capture screen: %w", err) } var buf bytes.Buffer // Nén chất lượng JPEG khoảng 50% để truyền tải mượt mà qua mạng err = jpeg.Encode(&buf, img, &jpeg.Options{Quality: 50}) if err != nil { return "", fmt.Errorf("failed to encode jpeg: %w", err) } encoded := base64.StdEncoding.EncodeToString(buf.Bytes()) return "data:image/jpeg;base64," + encoded, nil }