diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 901e1744..54e7546f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,8 @@ # Release History +## v4.3.9 (2023-09-19) +- fix: OCR calls use compressed image + ## v4.3.8 (2023-09-19) - feat: OCR calls use the high-precision cluster interface, and the default timeout is changed from 3s to 10s - feat: use jpeg to compress screenshots diff --git a/hrp/internal/version/VERSION b/hrp/internal/version/VERSION index fdd709db..3a6c610b 100644 --- a/hrp/internal/version/VERSION +++ b/hrp/internal/version/VERSION @@ -1 +1 @@ -v4.3.8 +v4.3.9 diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index b9ad0041..28eea07c 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -224,8 +224,30 @@ func (dExt *DriverExt) takeScreenShot(fileName string) (raw *bytes.Buffer, path } func compressImageBuffer(raw *bytes.Buffer) (compressed *bytes.Buffer, err error) { - // TODO: compress image data - return raw, nil + // 解码原始图像数据 + img, format, err := image.Decode(raw) + if err != nil { + return nil, err + } + + // 创建一个用来保存压缩后数据的buffer + var buf bytes.Buffer + + switch format { + // Convert to jpeg uniformly and compress with a compression rate of 95 + case "jpeg", "png": + jpegOptions := &jpeg.Options{Quality: 95} + err = jpeg.Encode(&buf, img, jpegOptions) + if err != nil { + return nil, err + } + default: + return nil, fmt.Errorf("unsupported image format: %s", format) + } + + // 返回压缩后的图像数据 + return &buf, nil + } // saveScreenShot saves image file with file name @@ -252,9 +274,8 @@ func (dExt *DriverExt) saveScreenShot(raw *bytes.Buffer, fileName string) (strin }() switch format { - // Convert to jpeg uniformly and compress with a compression rate of 95 case "jpeg", "png": - jpegOptions := &jpeg.Options{Quality: 95} + jpegOptions := &jpeg.Options{} err = jpeg.Encode(file, img, jpegOptions) default: return "", fmt.Errorf("unsupported image format: %s", format)