2011-08-28 138 views
0

大多數上傳到我的網站的所有JPEG文件的保存在​​逐行掃描格式,但沒有通過SORL-縮略圖生成的縮略圖時,原始圖像生成漸進。在創建大圖像的縮略圖時,這非常重要,例如,用於在旋轉木馬/滑塊內顯示。SORL-縮略圖:保存的JPEG文件「先進性」

我已經sumbitted an issue上SORL的跟蹤器,但我想,也許您根據現有的自定義後端,可以解決這個問題。有任何想法嗎?

謝謝!

回答

2
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 
+0

我只是測試了一個很像這樣的東西(大部分是PIL引擎的方法的複製粘貼)。在我的版本中,我沒有檢查格式是否爲JPEG(這確實是必要的?)。真正的問題是'image.progressive'。我使用Python 2.6.7和1.1.7 PIL,並嘗試這個答案時,該'image' PARAM沒有暴露的'progressive'屬性。然後我用'真',一切正常。那麼是什麼只留給這個答案是如何_detect_如果原始圖像是漸進式JPEG或沒有。 –

+0

是否有任何傷害使他們都進步? – Thomas

+0

我想沒有,只是一個一致性的事......不管怎樣,在這個方法很麻煩,以確定是否JPEG圖像是逐行或沒有,所以我接受你的答案,因爲它是我現在使用。 –