JPEGファイル特有の問題のようです。
出現したエラー
OSError: image file is truncated
これについては検索すると山ほど以下のTipsが出てくるのですが、これでLoadはできても、次のconvert() 処理で同じエラーになってしまい、解決できないときには。
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
OpenCVで読み込んで、変換してやるといい
RGB画像であればこれで。
from PIL import ImageFile
import cv2
fn = "hoge.jpg"
try:
im = Image.open(fn)
im = im.convert("RGB")
except OSError:
cvimg = cv2.imread(fn)
cvimg = cv2.cvtColor(cvimg, cv2.COLOR_BGR2RGB)
im = Image.fromarray(cvimg)
#これで im が得られた
truncated になるのはJPEGのみなので、全部でcv2を通すのはオーバーヘッドになってしまうので。