PILで画像をロードするとき、しばしば画像がロードできない現象が起きていたが、解決した。
自分のケースも
IOError: image file is truncated (0 bytes not processed)
というエラーだったので、おそらくこれで間違いない。
解決法としては、
from PIL import ImageFile ImageFile.LOAD_TRUNCATED_IMAGES = True
を追加するだけで良いらしい。
どうやらPILは極端に大きな画像など高速にロードできない画像はロードしないで見過ごす仕様になっているらしい。
デフォルトでFalseになっているLOAD_TRUNCATED_IMAGESをTrueにすることできちんとロードするようになった。
いままで「え?なんで他の人は普通にロードできるの?俺だけ?」と思っていたものだが、これで一つ懸念が解決して良かった。
やっぱ先人のコードを読むのは大事