2021-01-26

MSS 사용 중 에러 mss.exception.ScreenShotError: XGetImage() failed


1       원인 및 상황

원격으로 vnc server를 켜고 :0 display에서 작업을 하고 있었기에 혹시 원격에서만 나타나는 현상일까?’싶어서 부팅 시 run level을 여러 단계로 조작해보며 시도해보기도 하고 직접 모니터를 연결해 시도해보았지만 결과는 똑같았다. 문제는 여기에 있지 않았던 셈.

이라고 원인을 잘못 짚고 있었다. 나흘이 넘는 시간 동안에 온 웹사이트를 다 뒤지고 다니다가사사롭게 넘겼던 에서 얻은 조언을 응용하다가 결국 원인을 찾아내고야 말았다. 원인은 화면의 크기보다 더 큰 사이즈를 grab하려 할 때 발생한 에러이다.

현재 실행되고 있는 데스크톱의 display resolution이 철저하게 1920x1080이라고 믿고 있었다. 그런데 으로 얻은 이미지 파일의 크기는 1900x1200이었다. 설마 싶어서 grab()을 할 때 잘라낼 영역을 1000x1000으로 설정해보았더니 너무나도 잘 작동하는 것이었다.

 

2       해결 방법

를 따라 실행하되, 드시 거라 를 입력해보길 바란다. 예를 들자면
sct.grab({"top": 10, "left": 20, "width": 100, "height": 200})
와 같은 코드를 실행해본다.

만약 위의 방법이 통하지 않는다면 니터 을 시도해보거나, x11 을 고려해보는 것도 좋다.

 

3       잡설

아래는 에러를 해결해가며 알게 된 소소한(?) 내용을 함께 적어둔 것이다..

 

Ubuntu 20.04 LTS 버전에서 파이썬의 mss 라이브러리가 작동하지 않는 상태이다. 이에 관한 문제를 스택오버로우에서 확인할 수 있었고, 이에 관한 해결책을 따라해보며 기록해보았다.

이 원인은 아마도 mssxWayland 대신에 x11을 사용하고 있는 것 같다. xWayland는 페도라의 기본값이고, mss는 화면을 캡쳐하는 데에 x11을 사용하는 것 같다고 한다.

그래서 이를 해결하기 위해 링크에서 제시하는 방법을 따라보았다. sudo nano /etc/gdm3/custom.conf 를 연다. 참고로 우분투 20.04 버전에서는 gdm 대신 gdm3로 들어가야 한다.

#WaylandEnable=false

WaylandEnable=false
로 주석 해제한 다음

[daemon] 섹션에 아래의 문장을 추가했다.

DefaultSession=gnome-xorg.desktop

저장.

 

그런데 이 방법은 앞선 상황에서 전혀 빛을 보지 못했다고 전해진다.

 

댓글 없음:

댓글 쓰기