2012-05-28 38 views
1

我試圖使用PIL來保存一些在iPad 3上使用的漸進式,視網膜大小的圖像,但不斷收到「編碼器錯誤-2」在問題標題中提到。保存Progressive 2像素+ Jpeg與PIL時得到「編碼器錯誤-2」

我知道這是一個已知PIL + JPEG格式的問題,以及一些閱讀後,我聽說它可以通過添加一些像這樣的代碼來解決:

import PIL 
from PIL import ImageFile 
from exceptions import IOError 

try: 
    img.save("img.jpg", "JPEG" , quality=80, progressive=True) 
except IOError: 
    PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1] 
    img.save("img.jpg", "JPEG" , quality=80, progressive=True) 

然而,即使使用上述後方法來增加PIL的Maxblock,我的腳本仍然拋出一個「編碼器錯誤-2」。我也試過使得MAXBLOCK骯髒的大,但沒有運氣與,或者:

PIL.ImageFile.MAXBLOCK = 2048 ** 10 

我想處理的圖像是相當大(2048×2048),但我不願相信自己對PIL來說太大了。

是否有其他人遇到/解決了這類問題?

+0

我從看起來是相同的原因有同樣的錯誤。我在違規方法(ImageFile.py,_save @ line 466)中設置了一個pdb trace,然後運行。我刪除了pdb跟蹤,它仍然工作。非常奇特。 –

+0

我意識到這是對您的評論的遲來的迴應,但我並沒有登錄到該網站。我最終放棄了通過PIL來完成漸進式編碼 - 看起來底線是處理這樣大的圖像太老了。 –

+0

可能的重複[如何使用Python PIL 1.1.7保存漸進式jpeg?](http://stackoverflow.com/questions/6788398/how-to-save-progressive-jpeg-using-python-pil-1-1 -7) – bummi

回答

0

如果您使用pip安裝了PIL,請將其卸載並安裝枕頭。枕頭庫有它的PIL庫的邊緣版本。來自pip的PIL太舊了。如果您更新枕頭而不是PIL,則不必設置PIL.ImageFile.MAXBLOCK。它會自動處理。

如果您使用的Git子模塊只是將PIL源代碼下載到repo中,請確保從GitHub下載最新的源代碼並使用它。

+0

而不是將相同的答案添加到不同的問題,你應該標記重複。 – bummi

+1

同意。下次會注意。 – dhilipsiva