-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Description
Here is how it is triggered:
In [3]: from PIL import Image
In [5]: a = Image.open("images/spice_1.jpg")
In [7]: from io import BytesIO
In [9]: b = BytesIO()
In [10]: a.save(b, "PNG")
---------------------------------------------------------------------------
IOError Traceback (most recent call last)
<ipython-input-10-7850474bd2ff> in <module>()
----> 1 a.save(b, "PNG")
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/Image.pyc in save(self, fp, format, **params)
1669
1670 # may mutate self!
-> 1671 self.load()
1672
1673 save_all = False
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/ImageFile.pyc in load(self)
201
202 for d, e, o, a in self.tile:
--> 203 d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
204 seek(o)
205 try:
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/Image.pyc in _getdecoder(mode, decoder_name, args, extra)
418 return decoder(mode, *args + extra)
419 except AttributeError:
--> 420 raise IOError("decoder %s not available" % decoder_name)
421
422
IOError: decoder jpeg not available
But pillow has been installed with jpeg support, as part of Hashdist, here is the PR hashdist/hashstack#806, here is the build script:
$ hit show d2.yaml script pillow
set -e
export HDIST_IN_BUILD=yes
export MAX_CONCURRENCY=1
export SETUPTOOLS_PACKAGE_EXTRA_OPTIONS="build_ext --enable-zlib --enable-freetype --enable-jpeg2000 --include-dirs=${ZLIB_DIR}/include:${PNG_DIR}/include:${FREETYPE_DIR}/include:${OPENJPEG_DIR}/include --library-dirs=${ZLIB_DIR}/lib:${PNG_DIR}/lib:${FREETYPE_DIR}/lib:${OPENJPEG_DIR}/lib"
export CPPFLAGS="-I${FREETYPE_DIR}/include -I${OPENJPEG_DIR}/include -I${PATCHELF_DIR}/include -I${PNG_DIR}/include -I${PYTHON_DIR}/include -I${SETUPTOOLS_DIR}/include -I${ZLIB_DIR}/include"
export LDFLAGS="-L${FREETYPE_DIR}/lib -Wl,-rpath=${FREETYPE_DIR}/lib -L${OPENJPEG_DIR}/lib -Wl,-rpath=${OPENJPEG_DIR}/lib -L${PATCHELF_DIR}/lib -Wl,-rpath=${PATCHELF_DIR}/lib -L${PNG_DIR}/lib -Wl,-rpath=${PNG_DIR}/lib -L${PYTHON_DIR}/lib -Wl,-rpath=${PYTHON_DIR}/lib -L${SETUPTOOLS_DIR}/lib -Wl,-rpath=${SETUPTOOLS_DIR}/lib -L${ZLIB_DIR}/lib -Wl,-rpath=${ZLIB_DIR}/lib"
export PYTHONPATH=${ARTIFACT}/lib/python2.7/site-packages:$PYTHONPATH
mkdir -p ${ARTIFACT}/lib/python2.7/site-packages
${PYTHON} -c 'import setuptools; __file__="setup.py"; exec(open(__file__).read())' \
${SETUPTOOLS_PACKAGE_EXTRA_OPTIONS} \
install \
--prefix=. --root=${ARTIFACT} \
--single-version-externally-managed
rm -rf ${ARTIFACT}/lib/python2.7/site-packages/*.pth
You can see that the libraries are linked with jpeg support:
$ ldd /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/*.so
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/_imagingft.so:
linux-vdso.so.1 => (0x00007ffe11377000)
libfreetype.so.6 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../freetype/yyxa7627ngek/lib/libfreetype.so.6 (0x00007f946f06c000)
libpython2.7.so.1.0 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../python/7h32ksdqcejo/lib/libpython2.7.so.1.0 (0x00007f946ec63000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f946ea21000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f946e65c000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f946e435000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f946e230000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f946e02d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f946dd26000)
/lib64/ld-linux-x86-64.so.2 (0x00007f946f50f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f946db0d000)
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/_imagingmath.so:
linux-vdso.so.1 => (0x00007fff49396000)
libpython2.7.so.1.0 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../python/7h32ksdqcejo/lib/libpython2.7.so.1.0 (0x00007f8e24adb000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8e24898000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8e244d3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8e242ce000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f8e240ca000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8e23dc4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8e250ec000)
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/_imagingmorph.so:
linux-vdso.so.1 => (0x00007fffcb7e1000)
libpython2.7.so.1.0 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../python/7h32ksdqcejo/lib/libpython2.7.so.1.0 (0x00007f5d7bbfe000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5d7b9bb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d7b5f6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5d7b3f1000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f5d7b1ed000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5d7aee7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d7c20c000)
/home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/_imaging.so:
linux-vdso.so.1 => (0x00007ffca87f3000)
libopenjp2.so.7 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../openjpeg/6azwtldpgrmo/lib/libopenjp2.so.7 (0x00007f4f844ad000)
libz.so.1 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../zlib/v6anirfvk2op/lib/libz.so.1 (0x00007f4f84292000)
libpython2.7.so.1.0 => /home/ondrej/.hashdist/bld/profile/qiuivcebvrmc/lib/python2.7/site-packages/PIL/../../../../../../python/7h32ksdqcejo/lib/libpython2.7.so.1.0 (0x00007f4f83e8a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4f83c48000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4f83882000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4f8357c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4f83376000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f4f83173000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4f84958000)
Here is the full build log: https://gist.github.com/certik/785890e6e72e2ac51669. The relevant part is perhaps:
2015/07/06 10:53:58 - INFO: [package:run_job] PIL SETUP SUMMARY
2015/07/06 10:53:58 - INFO: [package:run_job] --------------------------------------------------------------------
2015/07/06 10:53:58 - INFO: [package:run_job] version Pillow 2.9.0
2015/07/06 10:53:58 - INFO: [package:run_job] platform linux2 2.7.9 (default, May 16 2015, 09:32:20)
2015/07/06 10:53:58 - INFO: [package:run_job] [GCC 4.8.2]
2015/07/06 10:53:58 - INFO: [package:run_job] --------------------------------------------------------------------
2015/07/06 10:53:58 - INFO: [package:run_job] *** TKINTER support not available
2015/07/06 10:53:58 - INFO: [package:run_job] *** JPEG support not available
2015/07/06 10:53:58 - INFO: [package:run_job] --- OPENJPEG (JPEG2000) support available (2.1)
2015/07/06 10:53:58 - INFO: [package:run_job] --- ZLIB (PNG/ZIP) support available
2015/07/06 10:53:58 - INFO: [package:run_job] *** LIBTIFF support not available
2015/07/06 10:53:58 - INFO: [package:run_job] --- FREETYPE2 support available
2015/07/06 10:53:58 - INFO: [package:run_job] *** LITTLECMS2 support not available
2015/07/06 10:53:58 - INFO: [package:run_job] *** WEBP support not available
2015/07/06 10:53:58 - INFO: [package:run_job] *** WEBPMUX support not available
So OPENJPEG is there. JPEG is not --- what does that mean? I thought OPENJPEG gives the JPEG support. Maybe that's the problem?
Metadata
Metadata
Assignees
Labels
No labels