14

我有一个Django站点,托管在Heroku上。其中一个模型有一个图像字段,用于获取上传的图像、调整它们的大小并将它们推送到 Amazon S3,以便它们可以持久存储。

这很好用,使用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 和 GIF,但未与libjpeg兼容。在本地开发环境或完全受控的 'nix 服务器上,只需安装 jpeg 扩展即可。

但是有谁知道是否可以使用 Cedar Heroku 堆栈进行 Jpeg 操作?还有什么可以添加到 requirements.txt 的吗?

在其他不相关的包中,这个 virtualenv 的 requirements.txt 包括:

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

谢谢

4

2 回答 2

21

我在 requirements.txt 中使用了这个 PIL 分支:

-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
       --------------------------------------------------------------------
于 2012-04-22T12:31:49.340 回答
8

还请考虑使用Pillow,这是一个“友好的” PIL 叉子,它提供:

  • 设置工具兼容性
  • Python 3 兼容性
  • 频繁的发布周期
  • 许多错误修复
于 2013-06-10T22:45:11.980 回答