我正在使用图片裁剪器,但是我无法进行表单验证。上传GIF图片时,该表格已通过验证,但是我尝试的任何其他格式都会引发以下异常:
Upload a valid image. The file you uploaded was either not an image or a corrupted image.
形成
<form enctype="multipart/form-data" method="post" action="/pic/">{% csrf_token %} {{ form.as_p }} <p><input type="submit" value="View uploaded image"></p> <input type="hidden" name="stage" value="crop"> </form>
视图
if request.method == 'POST': form = ProfilePicForm(request.POST, request.FILES) if form.is_valid(): *do stuff* else: logger.debug('Form errors == [%s]' % form.errors)
我在安装PIL(使用easy_install)之前已经安装了libjpeg-dev(使用apt-get)。起初,我以为这可能是由于libjpeg- dev或PIL的安装不正确造成的,但是对于其他格式(如png),问题是否仍然存在?实际上,png图像也确实会出现此问题。我没有遇到jpeg解码器问题,所以我认为不是这样,但是我不确定。另外,我正在使用django开发服务器。
我决定尝试重新安装PIL。我删除了PIL安装文件夹 /usr/local/lib/python2.7/dist-packages/PIL 和PIL.pth文件(在同一dist-packages文件夹中)。我使用来运行setup.py脚本sudo python setup.py install。然后,我运行了selftest.py脚本,它在第一次测试中失败了:
/usr/local/lib/python2.7/dist-packages/PIL
sudo python setup.py install
-------------------------------------------------------------------- PIL 1.1.7 TEST SUMMARY -------------------------------------------------------------------- Python modules loaded from ./PIL Binary modules loaded from ./PIL -------------------------------------------------------------------- --- PIL CORE support ok *** TKINTER support not installed *** JPEG support not installed *** ZLIB (PNG/ZIP) support not installed *** FREETYPE2 support not installed --- LITTLECMS support ok -------------------------------------------------------------------- Running selftest: ***************************************************************** Failure in example: try: _info(Image.open(os.path.join(ROOT, "Images/lena.jpg"))) except IOError, v: print v from line #24 of selftest.testimage Expected: ('JPEG', 'RGB', (128, 128)) Got: decoder jpeg not available 1 items had failures: 1 of 57 in selftest.testimage ***Test Failed*** 1 failures. *** 1 tests of 57 failed.
我不确定如何使PIL与上面列出的不受支持的模块一起使用。我可以验证是否具有zlib1g-dev,libfreetype6-dev,liblcms1-dev和libjpeg62-dev,以及库本身已安装在系统上,因为当我尝试使用apt- get安装它们时,它表示我已经拥有最新版本。
尝试从源代码下载PIL,然后编辑setup.py并添加以下行:
add_directory(library_dirs, "/usr/lib/i386-linux-gnu")
在此行之前(214):
add_directory(library_dirs, "/usr/lib")
然后
现在应该可以工作了