我收到一个错误,在两台不同的计算机上读取相同的lena.jpg文件会产生两个不同的校验和.
甚至更奇怪的是,当我运行md5sum lena.jpg时,我在两台机器上获得相同的md5总和,因此文件是相同的.
此外,当我加载png而不是jpeg时,数字似乎匹配.这让我相信Pillow在两台不同的机器上,或者至少是用于读取jpeg文件的库之间存在脱节.
有没有办法检查Pillow正在使用哪个版本的libjpeg(最好是在Python中)?
两台计算机都是Ubuntu,虽然一台是12.04,一台是14.04(我也在Mac上测试了它,并且得到了与14.04盒相同的值)
解决方法:
首先,找到Python安装使用的PIL egg:
>>> import PIL
>>> PIL.__path__
['/usr/local/python/2.7.3/lib/python2.7/site-packages/PIL']
然后在该目录中找到_imaging.so并使用ldd(Linux)或otool -L(OS X)查找已链接到的libjpeg的版本:
Linux的
$ldd /usr/local/python/2.7.3/lib/python2.7/site-packages/PIL/_imaging.so
linux-gate.so.1 => (0x00641000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00f00000)
libz.so.1 => /lib/libz.so.1 (0x006f4000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00fad000)
libc.so.6 => /lib/libc.so.6 (0x0021b000)
/lib/ld-linux.so.2 (0x0067e000)
Mac OS X.
$otool -L /Users/lukas/src/pillow-env/lib/python2.7/site-packages/PIL/_imaging.so
/Users/lukas/src/pillow-env/lib/python2.7/site-packages/PIL/_imaging.so:
/usr/local/lib/libjpeg.8.dylib (compatibility version 13.0.0, current version 13.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/local/lib/libtiff.5.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)