2012-04-18 34 views
14

Tôi có một trang web Django, được lưu trữ trên Heroku. Một trong các mô hình có một trường hình ảnh, có hình ảnh được tải lên, thay đổi kích thước chúng và đẩy chúng vào Amazon S3 để chúng có thể được lưu trữ liên tục.Python, PIL và JPEG trên Heroku

này hoạt động tốt, sử dụng 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 

Tuy nhiên, PIL dường như làm việc tốt cho PNG và GIF, nhưng không được compliled với libjpeg. Trên một môi trường phát triển cục bộ hoặc một máy chủ nix được kiểm soát hoàn toàn, nó chỉ đơn giản là một trường hợp cài đặt phần mở rộng jpeg.

Nhưng có ai biết liệu thao tác Jpeg có thể sử dụng ngăn xếp Cedar Heroku không? Có điều gì khác có thể được thêm vào requirements.txt không?

Trong số các gói liên quan khác, requirements.txt cho virtualenv này bao gồm:

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 

Cảm ơn

Trả lời

21

tôi sử dụng PIL ngã ba này trong requirements.txt:

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

và có thể sử dụng JPEG không có vấn đề:

 -------------------------------------------------------------------- 
     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

Thank bạn rất nhiều! đã hoạt động hoàn hảo! Tôi đã có một chút rắc rối khi đưa Heroku kéo một sự phụ thuộc từ thủy ngân, vì vậy tôi đã sao chép thư viện thành github và liên kết với nó. – errkk

+2

Bạn có một bản sao của dự án đó trên github? Bạn có thể chỉ cho tôi nó không? –

+2

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

8

Cũng xin xem xét sử dụng Pillow, "thân thiện" PIL nĩa trong đó cung cấp:

  • setuptools tương thích
  • Python 3 khả năng tương thích
  • phát hành thường xuyên chu kỳ
  • Nhiều sửa lỗi
+0

Ưu điểm của gối: Gối có thể được cài đặt bằng pip: 'pip install pillow'. Tương tự, bạn chỉ có thể viết 'gối' trong' requirements.txt'. –

+2

Bây giờ là năm 2017.'pip install pillow' vẫn yêu cầu cài đặt trước' libjpeg' bằng các phương tiện khác. Xem [liên kết này] (https://pillow.readthedocs.io/en/latest/installation.html#external-libraries). –