blog
# ClipboardToBase64 - 5. 'NoneType' object 본문
ClipboardToBase64 - 5. 'NoneType' object
다 된줄 알았는데 클립보드에 이미지가 들어있지 않으면 오류가 발생한다.
그리고 처음 생각했던 문제점인 tex 수식을 붙여넣는 문제도 아직 해결되지 않았다.
방법을 변경해서 클립보드에 있는게 텍스트라면 텍스트를 가져오고 아니라면 이미지를 가져오는 방식으로 해야겠다.
TestGetClipboardType
get_clipboard() 함수를 실행해서 문자열인지, 이미지인지 비교하는 테스트를 만든다.
class TestGetClipboardTypeStr(TestCase):
def setUp(self) -> None:
set_clipboard_text('text')
def test_get_clipboard(self):
clipboard_data = get_clipboard()
self.assertIsInstance(clipboard_data, str)
def tearDown(self) -> None:
set_empty_clipboard()
class TestGetClipboardTypeImage(TestCase):
def setUp(self) -> None:
set_clipboard_image(test_image_file)
def test_get_clipboard(self):
self.filepath = clipboard_image_to_png(get_clipboard())
clipboard_data = get_image_file(self.filepath)
self.assertEqual(type(clipboard_data), PIL.PngImagePlugin.PngImageFile)
def tearDown(self) -> None:
set_empty_clipboard()
os.remove(self.filepath)
def get_clipboard():
try:
clipboard_data = get_text_clipboard()
except TypeError:
clipboard_data = get_image_clipboard()
return clipboard_data
테스트 결과 작동하는걸 확인할 수 있었다.
앞에 만든 clipboard_image_to_base64_tag() 함수도 바로 클립보드에 접근하는 것에서 위의 get_clipboard() 함수를 받아오는 걸로 변경했다.
def clipboard_image_to_base64_tag(clipboard_data):
filepath = clipboard_image_to_png(clipboard_data)
base64_encoded = pngimagefile_to_base64(filepath)
image_tag = convert_markdown_image_tag(filepath, base64_encoded)
set_image_tag_clipboard(image_tag)
return filepath
get_clipboard_to_base64()
클립보드에 있는 데이터가 문자열이라면 바로 값을 돌려주고 이미지라면 이미지태그로 변환한 다음 태그를 돌려주는 함수를 만든다.
테스트 할 때 비교할 값을 생각하다 보니, clipboard_image_to_base64_tag() 의 반환값이 filepath 였었는데, 그럴 필요가 있나 하는 생각이 들었다. 그래서 image_tag로 변경했다.
def clipboard_image_to_base64_tag(clipboard_data):
filepath = clipboard_image_to_png(clipboard_data)
base64_encoded = pngimagefile_to_base64(filepath)
image_tag = convert_markdown_image_tag(filepath, base64_encoded)
image_tag = set_image_tag_clipboard(image_tag)
return image_tag
그리고 실행할 get_clipboard_to_base64() 함수를 만들었다.
def get_clipboard_to_base64():
clipboard_data = get_clipboard()
print(type(clipboard_data))
if isinstance(clipboard_data, str):
clipboard_data = clipboard_data
elif isinstance(clipboard_data, PIL.PngImagePlugin.PngImageFile):
clipboard_data = clipboard_image_to_base64_tag(clipboard_data)
return clipboard_data
작동시켜보니 정상작동 하는걸 확인할 수 있었다.

캡쳐한 이미지가 들어 있다면, 마크다운 태그 형식으로 바꿔서 반환한다. 텍스트가 있다면 텍스트를 반환한다.
'Python > ClipboardToBase64' 카테고리의 다른 글
# ClipboardToBase64 - 7. UI 만들기. 완성. (0) | 2022.01.11 |
---|---|
# ClipboardToBase64 - 6. tex 수식 이미지로 변환 (1) | 2022.01.11 |
# ClipboardToBase64 - 4. 클립보드에 넣어주기 (0) | 2022.01.11 |
# ClipboardToBase64 - 3. 마크다운에 맞게 태그 변환 (0) | 2022.01.11 |
# ClipboardToBase64 - 2. 이미지를 Base64로 인코딩하기 (0) | 2022.01.11 |
Comments