python – 查找PIL / PILLOW正在使用的libjpeg

我收到一个错误,在两台不同的计算机上读取相同的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)
上一篇:sa-token 鉴权框架(springboot集成)


下一篇:2021.11.1/2 巴蜀模拟赛总结