2014-01-24 42 views
3

我寫了下面的代碼從目錄中讀取jpeg,然後調整它們的大小。在調整圖像大小時解碼器JPEG錯誤

for dirs, path, files in os.walk("wallet_training/"): 
    for filename in files: 
      I=Image.open(os.path.join("wallet_training",filename)) 
      I=I.resize((256,256), Image.ANTIALIAS) 
      print I 

但是它引發以下錯誤:

File "test.py", line 31, in <module> 
I=I.resize((256,256), Image.ANTIALIAS) 
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1290, in resize 
self.load() 
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFile.py", line 189, in load 
d = Image._getdecoder(self.mode, d, a, self.decoderconfig) 
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 385, in _getdecoder 
raise 
IOError("decoder %s not available" % decoder_name) 

如果不調整大小功能使用的代碼似乎是工作。 預先感謝您。

P.S.我檢查了另一個問題,我的libjpeg-dev的安裝和它仍然沒有工作

+0

你似乎缺少PIL。你在運行什麼系統? 'pip install -I PIL'。 – 2014-01-24 21:01:32

+0

他沒有失蹤PIL;他只是缺少PIL的JPEG支持。 – abarnert

+0

您使用的是PIL/Pillow的版本?如果你還在使用PIL,有什麼理由不換成Pillow?如果你正在安裝一個二進制文件,你可以通過'pip'來安裝嗎?你在哪個平臺/發行版/版本上,以及你是如何安裝'libjpeg-dev'的?你確定位寬是否匹配(例如,32位'libjpeg-dev'對64位Python和PIL無幫助)? – abarnert

回答

2

如果要診斷爲什麼PIL不是在編譯時發現的libjpeg和正確使用它,我們可以......

但PIL是實際上是一個死了的項目,並且它在4年前不存在的系統配置上存在很多問題(如64位Ubuntu 13.10)。它在使用現代的setuptools/pip時也有一些問題,並且關於構建過程的文檔很少。它的最後一個版本(1.1.6)從未分發到PyPI。

Pillow是,它開始了與PIL 1.1.6「PIL的現代叉」,固定起來做setuptools得當,得到它的工作在每一個主要的操作系統,它移植到Python 3.x和固定所有種類的錯誤。

因此,除非您確實需要PIL 1.1.5或1.1.6,否則請使用Pillow。這應該是如此簡單:

$ pip uninstall PIL 
$ pip install pillow 

除非你通過二進制輪安裝,從輸出install命令應該給你一個很好的表,它的特點是在不編譯...但如果你有你發行人的標準libjpeglibjpeg-dev包,我敢打賭,它會被發現。

+0

我已經開始枕頭了。謝謝。 –

相關問題