• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    미해결

PIL OSError: unknown file format 에러

24.03.24 20:47 작성 조회수 45

0

안녕하세요?

강의 잘 수강하고 있습니다.

 

한글을 적용하는 수업에서 하기와 같이 소스코드를 따라서 쳤습니다.

파이썬 버전 : 3.12.2

opencv 버전 : 4.9.0

import cv2 as cv

import numpy as np

#PIL (Python Imaging Library) : 이미지 처리를 위한 파이썬 라이브러리

from PIL import ImageFont, ImageDraw, Image


def myPutText(src, text, pos, font_size, font_color):

img_pil = Image.fromarray(src)

draw = ImageDraw.Draw(img_pil)

font = ImageFont.truetype('fonts/gulim.ttc', font_size)

draw.text(pos, text, font=font, fill=font_color)

return np.array(img_pil)


img = np.zeros((480, 640, 3), np.uint8)

COLOR = (255, 255, 255)

FONT_SIZE = 30


img = myPutText(img, "나도코딩", (20, 50), FONT_SIZE, COLOR)



cv.imshow('img', img)

cv.waitKey(0)

cv.destroyAllWindows()

 

이렇게 작성해서 실행을 하면 OSError: unknown file format 에러가 출력됩니다.

인터넷 검색을 해보니 Pillow를 다시 설치해봐라, Image를 다시 설치해봐라

많은 조언이 있었는데 결국 성공한 것이 없었습니다.

 

왠지 제 파이썬 경로상에 PIL이 제대로 설치가 안됐거나 다른 엉뚱한 것을 참조해서 발생하는 문제 같기도 한데 또 vscode의 python 인터프리터는 제대로 설정해서 PIL 작성부분에 오류는 뜨지 않습니다.

 

혹시 조언을 해주실 수 있으실까요?

감사합니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.25

안녕하세요, 인프런 AI 인턴입니다.

상냥한 알파카님, PIL(Python Imaging Library)의 OSError: unknown file format 에러는 주로 지원하지 않는 파일 형식을 열려고 할 때 발생합니다. 하지만, 상냥한 알파카님의 코드를 보면 특정 이미지 파일을 열려고 하는 부분은 없고, ImageFont.truetype() 함수에서 문제가 발생하는 것 같습니다.

ImageFont.truetype() 함수의 경우에는 지정한 폰트 파일 경로에 문제가 있을 때 에러가 발생할 수 있습니다. gulim.ttc 파일이 실제로 상냥한 알파카님의 프로젝트 폴더 내에 fonts 폴더 안에 존재하는지, 그리고 파일 경로가 올바른지 확인해보시기 바랍니다.

추가로, 아래와 같은 방법으로 문제를 해결해볼 수 있습니다.

  1. 폰트 파일 경로를 절대 경로로 지정해보세요. 예를 들어, C:/Windows/Fonts/gulim.ttc와 같이 파일이 실제 위치한 절대 경로를 사용해 보세요.

  2. 만약 gulim.ttc 파일이 여러 폰트를 포함하고 있는 컬렉션일 경우, PIL이 해당 컬렉션 중 하나의 폰트를 제대로 로딩하지 못할 수 있습니다. 이런 경우, ImageFont.truetype('fonts/gulim.ttc', font_size, index=0)와 같이 폰트의 인덱스를 지정해 보세요.

  3. Pillow 라이브러리가 최신 버전인지 확인하고, 아닐 경우 업데이트해보세요. 때로는 라이브러리의 버그가 에러의 원인일 수 있으므로, pip install --upgrade Pillow 명령어를 사용해 업그레이드를 시도해 보세요.

이러한 조치들로도 문제가 해결되지 않는다면, Python과 Pillow 라이브러리의 호환성 문제일 수 있으므로, Python 버전을 변경해보는 것도 고려해볼 수 있습니다.

문제 해결을 위한 시도 중 어려움이 있거나 더 궁금한 점이 있다면 언제든지 질문해주세요. 감사합니다.