PIL(pillow)를 사용해서 이미지를 로드할 때, 이미지가 깨져있으면 해당 에러가 발생한다.
py 스크립트나 쥬피터 노트북에서 PIL.Image.open()을 사용하고 있다면
# 옵션을 선언해주면 에러가 발생하지 않습니다.
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
아래처럼 해주시면 깨진 이미지가 있어도 정상적으로 진행합니다.
다만 타인이 만든 컨테이너를 사용중이라 코드를 추가하여 커스텀 빌드를 만들기 껄끄러운 경우가 있는데요,
이 같은 경우 깨진 이미지가 무엇인지 직접 찾아서 삭제해주면 됩니다.
from PIL import Image
import os
checkdir = os.path.join("./", "image_3")
files = os.listdir(checkdir)
format = [".jpg", ".jpeg"]
for(path, dirs, f) in os.walk(checkdir):
for file in f:
if file.endswith(tuple(format)):
try:
image = Image.open(path+"/"+file).load()
# print(image)
except Exception as e:
print("An exception is raised:", e)
print(file)
대체 어떤 놈인지 확인해봅시다.
이미지가 잘려있군요.
이미지는 다운로드 중에 문제가 생겼던지, 파일 이동중이나, 폴더 합병중이나, SFTP로 서버로 옮긴다거나.. 어디서 문제가 생겼는지는 모르겠지만 이렇게 문제가 생기는 이미지로 인해 이미지를 로드할 때 실패하는 경우가 생깁니다.
여하튼 오늘도, 쓸데없는 문제 하나 해결하느라 시간이 걸렸네요.