【问题标题】:sorl-thumbnail: Preserve "progressiveness" of JPEG filessorl-thumbnail:保留 JPEG 文件的“渐进性”
【发布时间】:2011-11-05 12:26:31
【问题描述】:

上传到我的网站的大部分 JPEG 文件都以渐进格式保存,但是当原始图像是渐进式时,sorl-thumbnail 生成的缩略图不会生成为渐进式。这在创建大图像的缩略图时非常重要,例如,在轮播/滑块中显示。

我已经在 sorl 的跟踪器上提交了an issue,但我认为也许基于现有的后端创建一个自定义后端可以解决这个问题。有什么想法吗?

谢谢!

【问题讨论】:

    标签: django image jpeg sorl-thumbnail


    【解决方案1】:
    from sorl.thumbnail.engines import pil_engine
    
    class ProgressiveBackend(pil_engine.Engine):
        def _get_raw_data(self, image, format_, quality):
            ImageFile.MAXBLOCK = 1024 * 1024
            buf = StringIO()
            try:
                if format_=='JPEG':
                    image.save(buf, format=format_, quality=quality, optimize=1, progressive=image.progressive)
                else:
                    image.save(buf, format=format_, quality=quality, optimize=1)
            except IOError:
                image.save(buf, format=format_, quality=quality)
            raw_data = buf.getvalue()
            buf.close()
            return raw_data
    

    【讨论】:

    • 我只是在用类似这样的东西进行测试(主要是 PIL 引擎的那种方法的复制粘贴)。在我的版本中,我没有检查格式是否为 JPEG(真的有必要吗?)。真正的问题是image.progressive。我正在使用 Python 2.6.7 和 PIL 1.1.7,在尝试这个答案时,image 参数没有公开progressive 属性。然后我使用了True,一切正常。所以这个答案剩下的就是如何检测原始图像是否是渐进式JPEG。
    • 让他们都进步有什么坏处吗?
    • 我猜不,只是一致性问题......无论如何,用这种方法来确定 JPEG 图像是否是渐进式的很麻烦,所以我接受你的回答,因为这是我的我正在使用。
    猜你喜欢
    • 1970-01-01
    • 2016-05-09
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2014-12-21
    • 2017-08-09
    相关资源
    最近更新 更多