From dbde9508cb2d34645fcf76241d48b76959a34bae Mon Sep 17 00:00:00 2001 From: zhbaor Date: Mon, 25 Nov 2024 22:00:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E7=BC=96=E7=A0=81=E6=88=AA?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mower/utils/device/device.py | 6 ++---- mower/utils/image.py | 7 +------ mower/utils/log.py | 7 +++++-- server.py | 8 +++----- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/mower/utils/device/device.py b/mower/utils/device/device.py index 23a098e..6f8144d 100644 --- a/mower/utils/device/device.py +++ b/mower/utils/device/device.py @@ -20,7 +20,7 @@ from mower.utils.device.simulator import restart_simulator from mower.utils.device.simulator.MuMu12_external_renderer_ipc import ( MuMu12ExternalRendererIPC, ) -from mower.utils.image import bytes2img, img2bytes +from mower.utils.image import bytes2img from mower.utils.log import logger, save_screenshot from mower.utils.network import get_new_port, is_port_in_use @@ -291,9 +291,6 @@ class Device: ) img = cv2.cvtColor(array, cv2.COLOR_RGBA2RGB) - screencap = img2bytes(img) - save_screenshot(screencap) - stop_time = datetime.now() config.screenshot_time = stop_time interval = (stop_time - start_time).total_seconds() * 1000 @@ -309,6 +306,7 @@ class Device: else: config.screenshot_count += 1 + save_screenshot(img) return img def current_focus(self) -> str: diff --git a/mower/utils/image.py b/mower/utils/image.py index eed88db..827b8a2 100644 --- a/mower/utils/image.py +++ b/mower/utils/image.py @@ -7,7 +7,7 @@ import numpy as np from PIL import Image from mower.utils import typealias as tp -from mower.utils.log import logger, save_screenshot +from mower.utils.log import logger from mower.utils.path import get_path @@ -190,11 +190,6 @@ def cropimg(img: tp.Image, scope: tp.Scope) -> tp.Image: return img[scope2slice(scope)] -def saveimg(img: tp.Image, folder): - del folder # 兼容2024.05旧版接口 - save_screenshot(img2bytes(img)) - - def cmatch( img1: tp.Image, img2: tp.Image, thresh: int = 10, draw: bool = False ) -> bool: diff --git a/mower/utils/log.py b/mower/utils/log.py index b5997b7..a9ccad8 100644 --- a/mower/utils/log.py +++ b/mower/utils/log.py @@ -12,6 +12,7 @@ from threading import Thread import colorlog from mower.utils import config +from mower.utils import typealias as tp from mower.utils.path import get_path from mower.utils.traceback import log_debug, log_info @@ -112,6 +113,8 @@ def screenshot_cleanup(): def screenshot_worker(): + from mower.utils.image import img2bytes + screenshot_cleanup() while True: now = datetime.now() @@ -119,13 +122,13 @@ def screenshot_worker(): screenshot_cleanup() img, filename = screenshot_queue.get() with screenshot_folder.joinpath(filename).open("wb") as f: - f.write(img) + f.write(img2bytes(img)) Thread(target=screenshot_worker, daemon=True).start() -def save_screenshot(img: bytes) -> None: +def save_screenshot(img: tp.Image) -> None: filename = f"{time.time_ns()}.jpg" logger.debug(filename) screenshot_queue.put((img, filename)) diff --git a/server.py b/server.py index 348d4b5..5cbdecb 100755 --- a/server.py +++ b/server.py @@ -449,14 +449,12 @@ def test_custom_screenshot(): shell=True, creationflags=subprocess.CREATE_NO_WINDOW if __system__ == "windows" else 0, ) - end = time.time() - elapsed = int((end - start) * 1000) - data = np.frombuffer(data, np.uint8) data = cv2.imdecode(data, cv2.IMREAD_COLOR) + elapsed = int((time.time() - start) * 1000) + _, data = cv2.imencode(".jpg", data, [int(cv2.IMWRITE_JPEG_QUALITY), 75]) - data = base64.b64encode(data) - data = data.decode("ascii") + data = base64.b64encode(data).decode("ascii") return {"elapsed": elapsed, "screenshot": data}