Так что я смотрел на this question и получил следующий код от него:Как уменьшить размер файла изображения в python?
import Image, ImageFile
pic = pic/goes/here.jpg
im = Image.open(pic)
width, height = im.size
if width > 1000 or height > 1000:
width = width*.7
height = height*.7
im = im.resize((int(math.floor(width)), int(math.floor(height))), Image.ANTIALIAS)
try:
im.save(pic,optimize=True,quality=80)
except IOError:
ImageFile.MAXBLOCK = width * height
im.save(pic,optimize=True,quality=80)
Последний бит в конце пришел из this question, как я заметил, PIL только отчасти сдался, когда файл превысил около 1500 ~ точек размера (Я не знаю, почему?)
Проблема заключается в том, что когда я запускаю этот код с изображением примерно 2500x1600, PIL либо дает мне изображение того же размера (1,2 МБ), либо пустой файл с 0 МБ. У меня когда-то был файл, который был больше!?!? (1.38MB)
Так что я делаю неправильно? Я просто хочу оптимизировать изображение до размера файла без потери качества на 80%.
Также любые другие способы уменьшить размер файла в python? Благодаря!!
После сброса 'ImageFile.MAXBLOCK' после' IOError' вам нужно выполнить другое 'im.save()' с его помощью. – martineau
Ваш код не заполнен; 'pic' нигде не установлен. –
Извините! Не заметил, что я взял этот бит из функции, теперь исправлено спасибо @martineau! Я собираюсь сделать еще несколько тестов, и это может быть проблемой. – bnynn