2012-04-18 2 views
14

У меня есть Django сайт, размещенный на Heroku. Одна из моделей имеет поле изображения, которое принимает загруженные изображения, изменяет их размеры и подталкивает их к Amazon S3, чтобы их можно было сохранить настойчиво.Python, PIL и JPEG на Heroku

Это хорошо работает, используя PIL

def save(self, *args, **kwargs): 


    # Save this one 
    super(Product, self).save(*args,**kwargs) 

    # resize on file system 
    size = 200, 200 
    filename = str(self.thumbnail.path) 
    image = Image.open(filename) 
    image.thumbnail(size, Image.ANTIALIAS) 
    image.save(filename) 

    # send to amazon and remove from ephemeral file system 
    if put_s3(filename): 
     os.remove(filename) 
     return True 

Однако, PIL, кажется, работает хорошо для PNG файлов и GIFs, но не compliled с libjpeg. В локальной среде разработки или полностью контролируемом «nix-сервере» это просто случай установки расширения jpeg.

Но кто-нибудь знает, возможно ли манипулирование Jpeg, используя стек кедра Heroku? Есть ли что-то еще, что можно добавить в requirements.txt?

Среди других несвязанных пакетов, то requirements.txt для этого virtualenv включает в себя:

Django==1.3.1 
PIL==1.1.7 
distribute==0.6.24 
django-queued-storage==0.5 
django-storages==1.1.4 
psycopg2==2.4.4 
python-dateutil==1.5 
wsgiref==0.1.2 

Благодаря

ответ

21

Я использую эту PIL вилку в requirements.txt:

-e hg+https://bitbucket.org/etienned/pil-2009-raclette/#egg=PIL 

и может использовать JPEG без проблем:

 -------------------------------------------------------------------- 
     PIL 1.2a0 SETUP SUMMARY 
     -------------------------------------------------------------------- 
     version  1.2a0 
     platform  Python 2.7.2 (default, Oct 31 2011, 16:22:04) 
        [GCC 4.4.3] on linux2 
     -------------------------------------------------------------------- 
     *** TKINTER support not available 
     --- JPEG support available 
     *** WEBP support not available 
     --- ZLIB (PNG/ZIP) support available 
     --- FREETYPE2 support available 
     --- LITTLECMS support available 
     -------------------------------------------------------------------- 
+3

Спасибо вы так много! это сработало отлично! У меня было немного проблем с получением Heroku, чтобы вывести зависимость от mercurial, поэтому я скопировал библиотеку в github и связался с ней. – errkk

+2

У вас есть клон этого проекта на github? Можете ли вы указать мне на это, пожалуйста? –

+2

[https://github.com/errkk/gitpil](https://github.com/errkk/gitpil) – errkk

8

Также, пожалуйста, рассмотреть вопрос об использовании Pillow, "дружественная" PIL вилка, которая предлагает:

совместимости
  • Setuptools
  • Python 3 Совместимости
  • Частого цикл выпуск
  • Многих исправления
+0

Преимущества подушки: Подушка может быть установлена ​​с пипсом: 'pip install pillow'. Аналогично, вы можете просто написать 'pillow' в' requirements.txt'. –

+2

Сейчас 2017 год.'pip install pillow' по-прежнему требует предварительной установки' libjpeg' другими способами. См. [Эта ссылка] (https://pillow.readthedocs.io/en/latest/installation.html#external-libraries). –