首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPEG和PNG库在PIL中的应用

JPEG和PNG库在PIL中的应用
EN

Stack Overflow用户
提问于 2012-06-08 21:57:52
回答 1查看 2K关注 0票数 1

我是一个相对较新的开发新手,我一直在尝试设置我在Django (在Windows7,64位)中构建的一个应用程序,以接受通过ImageField上传的图像。我最初安装了PIL,但发现我首先需要JPEG和PNG库。因此,我使用"pip uninstall pil“卸载了PIL,并在C:\zlib-1.2.7\zlib.lib和C:\jpeg-8d\libjpeg.lib中设置了库。之后,我进入了PIL中的setup.py并更改了以下内容:

代码语言:javascript
复制
    JPEG_ROOT = "C:/jpeg-8d"
    ZLIB_ROOT = "C:/zlib-1.2.7"

然后我通过以下方式进行安装:

代码语言:javascript
复制
    pip install C:\Imaging-1.1.7\

在安装结束时,我得到了以下内容,这表明支持JPEG和PNG:

代码语言:javascript
复制
Installing collected packages: PIL
Running setup.py install for PIL
WARNING: '' not a valid package name; please use only.-separated package nam
es in setup.py
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      win32 2.6.6 (r266:84297, Aug 24 2010, 18:46:32)
              [MSC v.1500 32 bit (Intel)]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.
Successfully installed PIL
Cleaning up...

然而,当我使用selftest.py进行测试时,我得到了以下结果,这表明没有支持:

代码语言:javascript
复制
C:\Windows\system32>python C:\Imaging-1.1.7\selftest.py
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from C:\Users\ayan\Desktop\Imaging-1.1.7\PIL
Binary modules loaded from C:\Python26_x86\lib\site-packages\PIL
--------------------------------------------------------------------
*** PIL CORE support not installed
*** TKINTER support not installed
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
*** FREETYPE2 support not installed
*** LITTLECMS support not installed
--------------------------------------------------------------------

我也尝试过使用JPEG,得到了如下的IOError:

代码语言:javascript
复制
C:\Users\Public\Pictures\Sample Pictures>python
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> import os, sys
>>> import Image
>>> img = Image.open(Desert.jpg)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Desert' is not defined
>>> img = Image.open("Desert.jpg")
>>> img.save("Desert_test.jpg")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python26_x86\lib\site-packages\PIL\Image.py", line 1406, in save
    self.load()
  File "C:\Python26_x86\lib\site-packages\PIL\ImageFile.py", line 189, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
  File "C:\Python26_x86\lib\site-packages\PIL\Image.py", line 385, in _getdecode
r
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

这在某种程度上类似于https://stackoverflow.com/questions/10543581/pil-installation-run-issue上报告的情况;但是,在这种情况下,JPEG似乎实际上不起作用。PNG也存在类似的问题。

我不清楚我在这个过程中犯了什么错误,所以任何评论都将不胜感激。如果需要更多的信息,请告诉我,我会尽力提供的。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2013-06-19 23:43:11

我已经解决了类似的问题,但只是为了支持png。我相信你也可以为jpeg支持做同样的事情。

首先,我推荐使用Pillow,它是PIL的一个分支。我使用的解决方案是在我的机器(win7 64位)上手动编译zlib库。然后手动编译Pillow包。我像您一样编辑了Setup.py,使其指向放置刚编译的zlib的目录。

我建议您手动编译jpeg lib和zlib,然后再次编译Pillow。执行此操作之前,请确保卸载以前版本的PIL/Pillow。

我关于如何使用zlib的详细答案的链接是:

https://stackoverflow.com/a/17190972/2501083

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10950270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档