image file is truncated 해결

노하람·2022년 9월 2일
0
post-custom-banner

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로 서버로 옮긴다거나.. 어디서 문제가 생겼는지는 모르겠지만 이렇게 문제가 생기는 이미지로 인해 이미지를 로드할 때 실패하는 경우가 생깁니다.

여하튼 오늘도, 쓸데없는 문제 하나 해결하느라 시간이 걸렸네요.

profile
MLOps, MLE 직무로 일하고 있습니다😍
post-custom-banner

0개의 댓글