Files
rikkei_simple_care/client/internal/screen/screen.go
2026-06-30 09:31:33 +07:00

36 lines
927 B
Go

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,..."
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
}