Я знаю, что в StackOverflow есть миллион вопросов и ответов об этой ошибке, и я прочитал их все и попробовал многие из их предложений (Pillow вместо PIL, io.BytesIO вместо stringIO), но я все еще получаю ту же проблему. со следующим:
Я работаю над кодом для обработки изображений из S3 — в частности, для их повторного сохранения в формате JPG, поворота при необходимости и создания различных эскизов. Соответствующая часть кода получает список URL-адресов, ссылающихся на изображения на S3. Я могу подтвердить, что да, изображения находятся на S3 в месте, указанном URL-адресом. На каждом URL я вызываю следующее:
def process_new_image(file_url):
# Load the image and make it a PIL object
try:
fd = urllib.urlopen(file_url)
image_file = io.BytesIO(fd.read())
image = Image.open(image_file)
except Exception, e:
# ===> This is where the issue happens. <====
raise
# Read the exif data and potentially rotate the image
transpose = Transpose()
transposed_image = transpose.process(image)
# Resave the image as a jpeg
new_image_data = io.BytesIO()
transposed_image.save(new_image_data, 'jpeg', quality=100)
new_image_data.seek(0)
try:
self.image.save('image', ContentFile(new_image_data.read()), save=True)
except Exception, e:
raise
new_image_data.seek(0)
self.process_thumbnails(new_image_data)
Этот код отлично работает локально. Но когда я запускаю его в своей тестовой среде в Heroku, я получаю «IOError: не удается идентифицировать файл изображения». Он не работает с JPG, PNG и GIF, которые работают локально.
Особенности моей среды:
Джанго == 1.5.1
Подушка == 2.1.0
пилкит==1.1.1
Python 2.7.3 (на обоих)
Локально Pillow скомпилирован с:
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** TIFF G3/G4 (experimental) support not available
--- FREETYPE2 support available
*** LITTLECMS support not available
*** WEBP support not available
На подушке Heroku, скомпилированной с:
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- TIFF G3/G4 (experimental) support available
--- FREETYPE2 support available
--- LITTLECMS support available
*** WEBP support not available