We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
使用 python gui.py 运行时,出现报错 UnidentifiedImageError. 回退到 bc5e6ed 版本后可以正常执行,因此推测问题来自PR #4374
预期可以正常运行
╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\alas.py:69 in run │ │ │ │ 66 │ │ try: │ │ 67 │ │ │ if not skip_first_screenshot: │ │ 68 │ │ │ │ self.device.screenshot() │ │ ❱ 69 │ │ │ self.__getattribute__(command)() │ │ 70 │ │ │ return True │ │ 71 │ │ except TaskEnd: │ │ 72 │ │ │ return True │ │ │ │ ╭──────────────────────────────────── locals ────────────────────────────────────╮ │ │ │ command = 'tactical' │ │ │ │ self = <alas.AzurLaneAutoScript object at 0x000001C19FB47608> │ │ │ │ skip_first_screenshot = False │ │ │ ╰────────────────────────────────────────────────────────────────────────────────╯ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\alas.py:194 in tactical │ │ │ │ 191 │ │ │ 192 │ def tactical(self): │ │ 193 │ │ from module.tactical.tactical_class import RewardTacticalClass │ │ ❱ 194 │ │ RewardTacticalClass(config=self.config, device=self.device).run() │ │ 195 │ │ │ 196 │ def dorm(self): │ │ 197 │ │ from module.dorm.dorm import RewardDorm │ │ │ │ ╭────────────────────────────────────── locals ──────────────────────────────────────╮ │ │ │ RewardTacticalClass = <class 'module.tactical.tactical_class.RewardTacticalClass'> │ │ │ │ self = <alas.AzurLaneAutoScript object at 0x000001C19FB47608> │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\tactical\tactical_class.py:706 in run │ │ │ │ 703 │ │ │ in: Any │ │ 704 │ │ │ out: page_tactical │ │ 705 │ │ """ │ │ ❱ 706 │ │ self.ui_ensure(page_reward) │ │ 707 │ │ │ │ 708 │ │ self.tactical_class_receive() │ │ 709 │ │ │ │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │ │ │ self = <module.tactical.tactical_class.RewardTacticalClass object at 0x000001C1D103A788> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\ui\ui.py:280 in ui_ensure │ │ │ │ 277 │ │ │ bool: If UI switched. │ │ 278 │ │ """ │ │ 279 │ │ logger.hr("UI ensure") │ │ ❱ 280 │ │ self.ui_get_current_page(skip_first_screenshot=skip_first_screenshot) │ │ 281 │ │ if self.ui_current == destination: │ │ 282 │ │ │ logger.info("Already at %s" % destination) │ │ 283 │ │ │ return False │ │ │ │ ╭───────────────────────────────────────────────── locals ──────────────────────────────────────────────────╮ │ │ │ destination = <module.ui.page.Page object at 0x000001C1D128B9C8> │ │ │ │ self = <module.tactical.tactical_class.RewardTacticalClass object at 0x000001C1D103A788> │ │ │ │ skip_first_screenshot = True │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\ui\ui.py:189 in ui_get_current_page │ │ │ │ 186 │ │ │ for page in Page.iter_pages(): │ │ 187 │ │ │ │ if page.check_button is None: │ │ 188 │ │ │ │ │ continue │ │ ❱ 189 │ │ │ │ if self.ui_page_appear(page=page): │ │ 190 │ │ │ │ │ logger.attr("UI", page.name) │ │ 191 │ │ │ │ │ self.ui_current = page │ │ 192 │ │ │ │ │ return page │ │ │ │ ╭───────────────────────────────────────────────── locals ──────────────────────────────────────────────────╮ │ │ │ app_check = <function run_once.<locals>.wrapper at 0x000001C1D1729798> │ │ │ │ minicap_check = <function run_once.<locals>.wrapper at 0x000001C1D1738168> │ │ │ │ page = <module.ui.page.Page object at 0x000001C1D123DE88> │ │ │ │ rotation_check = <function run_once.<locals>.wrapper at 0x000001C1D1738288> │ │ │ │ self = <module.tactical.tactical_class.RewardTacticalClass object at 0x000001C1D103A788> │ │ │ │ skip_first_screenshot = False │ │ │ │ timeout = Timer(limit=4.832/10, count=1/20) │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\ui\ui.py:36 in ui_page_appear │ │ │ │ 33 │ │ │ interval: │ │ 34 │ │ """ │ │ 35 │ │ if page == page_main: │ │ ❱ 36 │ │ │ if self.appear(page_main_white.check_button, offset=offset, │ │ interval=interval): │ │ 37 │ │ │ │ return True │ │ 38 │ │ │ if self.appear(page_main.check_button, offset=(5, 5), interval=interval): │ │ 39 │ │ │ │ return True │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ interval = 0 │ │ │ │ offset = (30, 30) │ │ │ │ page = <module.ui.page.Page object at 0x000001C1D123DE88> │ │ │ │ self = <module.tactical.tactical_class.RewardTacticalClass object at 0x000001C1D103A788> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\base\base.py:171 in appear │ │ │ │ 168 │ │ │ if isinstance(offset, bool): │ │ 169 │ │ │ │ offset = self.config.BUTTON_OFFSET │ │ 170 │ │ │ appear = button.match(self.device.image, offset=offset, │ │ ❱ 171 │ │ │ │ │ │ │ │ threshold=self.config.BUTTON_MATCH_SIMILARITY if │ │ threshold is None else threshold) │ │ 172 │ │ else: │ │ 173 │ │ │ appear = button.appear_on(self.device.image, │ │ 174 │ │ │ │ │ │ │ │ │ threshold=self.config.COLOR_SIMILAR_THRESHOLD if │ │ threshold is None else threshold) │ │ │ │ ╭─────────────────────────────────────────── locals ────────────────────────────────────────────╮ │ │ │ button = MAIN_GOTO_CAMPAIGN_WHITE │ │ │ │ interval = 0 │ │ │ │ offset = (30, 30) │ │ │ │ self = <module.tactical.tactical_class.RewardTacticalClass object at 0x000001C1D103A788> │ │ │ │ threshold = None │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\base\button.py:212 in match │ │ │ │ 209 │ │ Returns: │ │ 210 │ │ │ bool. │ │ 211 │ │ """ │ │ ❱ 212 │ │ self.ensure_template() │ │ 213 │ │ │ │ 214 │ │ if isinstance(offset, tuple): │ │ 215 │ │ │ if len(offset) == 2: │ │ │ │ ╭────────────────────── locals ───────────────────────╮ │ │ │ image = array([[[214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ ..., │ │ │ │ │ │ [214, 211, 231], │ │ │ │ │ │ [214, 211, 239], │ │ │ │ │ │ [198, 203, 231]], │ │ │ │ │ │ │ │ │ │ [[214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ ..., │ │ │ │ │ │ [214, 211, 231], │ │ │ │ │ │ [214, 215, 239], │ │ │ │ │ │ [198, 203, 231]], │ │ │ │ │ │ │ │ │ │ [[214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ [214, 158, 182], │ │ │ │ │ │ ..., │ │ │ │ │ │ [214, 211, 231], │ │ │ │ │ │ [214, 211, 231], │ │ │ │ │ │ [198, 203, 231]], │ │ │ │ │ │ │ │ │ │ ..., │ │ │ │ │ │ │ │ │ │ [[ 58, 57, 50], │ │ │ │ │ │ [ 58, 53, 50], │ │ │ │ │ │ [ 66, 57, 50], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 50, 49, 50], │ │ │ │ │ │ [ 50, 53, 50], │ │ │ │ │ │ [ 50, 49, 50]], │ │ │ │ │ │ │ │ │ │ [[ 58, 53, 58], │ │ │ │ │ │ [ 58, 53, 58], │ │ │ │ │ │ [ 58, 53, 58], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 50, 49, 50], │ │ │ │ │ │ [ 50, 49, 50], │ │ │ │ │ │ [ 50, 49, 50]], │ │ │ │ │ │ │ │ │ │ [[ 66, 61, 66], │ │ │ │ │ │ [ 58, 57, 58], │ │ │ │ │ │ [ 58, 61, 58], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 50, 49, 58], │ │ │ │ │ │ [ 50, 53, 58], │ │ │ │ │ │ [ 50, 49, 58]]], dtype=uint8) │ │ │ │ offset = (30, 30) │ │ │ │ self = MAIN_GOTO_CAMPAIGN_WHITE │ │ │ │ threshold = 0.85 │ │ │ ╰─────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\base\button.py:161 in ensure_template │ │ │ │ 158 │ │ │ │ │ image = crop(image, self.area) │ │ 159 │ │ │ │ │ self.image.append(image) │ │ 160 │ │ │ else: │ │ ❱ 161 │ │ │ │ self.image = load_image(self.file, self.area) │ │ 162 │ │ │ self._match_init = True │ │ 163 │ │ │ 164 │ def ensure_binary_template(self): │ │ │ │ ╭──────────── locals ─────────────╮ │ │ │ self = MAIN_GOTO_CAMPAIGN_WHITE │ │ │ ╰─────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\base\utils.py:511 in load_image │ │ │ │ 508 │ Returns: │ │ 509 │ │ np.ndarray: │ │ 510 │ """ │ │ ❱ 511 │ image = Image.open(file) │ │ 512 │ if area is not None: │ │ 513 │ │ image = image.crop(area) │ │ 514 │ image = np.array(image) │ │ │ │ ╭────────────────────────── locals ──────────────────────────╮ │ │ │ area = (1132, 529, 1187, 557) │ │ │ │ file = './assets/cn/ui_white/MAIN_GOTO_CAMPAIGN_WHITE.png' │ │ │ ╰────────────────────────────────────────────────────────────╯ │ │ │ │ D:\Software\anaconda3\envs\alas\lib\site-packages\PIL\Image.py:3024 in open │ │ │ │ 3021 │ for message in accept_warnings: │ │ 3022 │ │ warnings.warn(message) │ │ 3023 │ raise UnidentifiedImageError( │ │ ❱ 3024 │ │ "cannot identify image file %r" % (filename if filename else fp) │ │ 3025 │ ) │ │ 3026 │ │ 3027 │ │ │ │ ╭──────────────────────────────────────────── locals ─────────────────────────────────────────────╮ │ │ │ _open_core = <function open.<locals>._open_core at 0x000001C1D17820D8> │ │ │ │ accept_warnings = [] │ │ │ │ exclusive_fp = True │ │ │ │ filename = './assets/cn/ui_white/MAIN_GOTO_CAMPAIGN_WHITE.png' │ │ │ │ formats = [] │ │ │ │ fp = <_io.BufferedReader name='./assets/cn/ui_white/MAIN_GOTO_CAMPAIGN_WHITE.png'> │ │ │ │ im = None │ │ │ │ mode = 'r' │ │ │ │ prefix = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR' │ │ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ UnidentifiedImageError: cannot identify image file './assets/cn/ui_white/MAIN_GOTO_CAMPAIGN_WHITE.png' During handling of the above exception, another exception occurred: ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\module\webui\process_manager.py:162 in run_process │ │ │ │ 159 │ │ │ │ │ │ 160 │ │ │ │ if e is not None: │ │ 161 │ │ │ │ │ AzurLaneAutoScript.stop_event = e │ │ ❱ 162 │ │ │ │ AzurLaneAutoScript(config_name=config_name).loop() │ │ 163 │ │ │ elif func in get_available_func(): │ │ 164 │ │ │ │ from alas import AzurLaneAutoScript │ │ 165 │ │ │ │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │ │ │ _ = [] │ │ │ │ args = Namespace(electron=False) │ │ │ │ AzurLaneAutoScript = <class 'alas.AzurLaneAutoScript'> │ │ │ │ AzurLaneConfig = <class 'module.config.config.AzurLaneConfig'> │ │ │ │ config_name = 'alas' │ │ │ │ e = UnidentifiedImageError("cannot identify image file './assets/cn/ui/PLAYER_CHECK.png'") │ │ │ │ func = 'alas' │ │ │ │ parser = ArgumentParser(prog='patcher.py', usage=None, description=None, formatter_class=<class │ │ │ │ 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True) │ │ │ │ q = <AutoProxy[Queue] object, typeid 'Queue' at 0x1c1d15cf348> │ │ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\alas.py:537 in loop │ │ │ │ 534 │ │ │ self.device.stuck_record_clear() │ │ 535 │ │ │ self.device.click_record_clear() │ │ 536 │ │ │ logger.hr(task, level=0) │ │ ❱ 537 │ │ │ success = self.run(inflection.underscore(task)) │ │ 538 │ │ │ logger.info(f'Scheduler: End task `{task}`') │ │ 539 │ │ │ self.is_first_task = False │ │ 540 │ │ │ │ ╭───────────────────────────── locals ──────────────────────────────╮ │ │ │ _ = <module.device.device.Device object at 0x000001C1D16584C8> │ │ │ │ self = <alas.AzurLaneAutoScript object at 0x000001C19FB47608> │ │ │ │ task = 'Tactical' │ │ │ ╰───────────────────────────────────────────────────────────────────╯ │ │ │ │ E:\Documents\Projects\Entertainment\Reference\AzurLaneAutoScript\alas.py:127 in run │
No response
State.deploy_config.EnableReload 为True, 因此gui.py中会使用multiprocessing方式运行,可能和问题相关
The text was updated successfully, but these errors were encountered:
我也有相同的问题
Sorry, something went wrong.
似乎和import顺序有关,试了下将module.xxx的import全部移动到func内部之后可以正常运行了
func
我尝试在我电脑上复现这个问题,但是没有成功,你能提供一下其他可能有用的信息吗, 比如准确的复现问题的步骤,系统的版本, 你也可以把修改后解决问题的代码作为pr提交
No branches or pull requests
在提问之前...
描述你的问题
使用 python gui.py 运行时,出现报错 UnidentifiedImageError.
回退到 bc5e6ed 版本后可以正常执行,因此推测问题来自PR #4374
如何复现
预期行为
预期可以正常运行
相关 Logs
截图
No response
还有别的吗?
State.deploy_config.EnableReload 为True, 因此gui.py中会使用multiprocessing方式运行,可能和问题相关
The text was updated successfully, but these errors were encountered: