Django ImageFile _get_image_dimensions()返回None

时间:2014-04-17 05:14:04

标签: python django django-models

我正在使用django的ImageFile来执行以下命令:

>>> f = open("path/image.jpg")
>>> myImage = ImageFile(f)
>>> dim = myImage._get_image_dimensions()
>>> dim

>>> dim is None
True

没有显示错误消息,但dim为空,类型为“NoneType”。

>> myImage.height

因为它而返回错误消息:

File "some\path\django\core\files\images.py", line 21, in _get_height
    return self._get_image_dimensions()[1]
TypeError: 'NoneType' object has no attribute '__getitem__'

我在Windows 7机器上运行python 2.7,django 1.6,我的朋友在Mac上尝试了相同的代码并且工作正常。

1 个答案:

答案 0 :(得分:1)

如果您阅读code。您将看到get_image_dimensions从文件中读取一个块并尝试使用PIL将其解析为图像。如果失败,则会增加chunksize并重复。 (增加chunksize是读取整个文件的次数少于(filesize / initial chunksize)次。Fileformats like TIFF need to read the while file.

在3个案例中可能会发生None的回复。

  1. 一个空文件。还有first chunk read is empty
  2. 读完整个文件后,PIL仍然无法将其解析为文件。你的档案完整吗?这是一张照片吗?
  3. 如果Pillow将大小设置为None。尝试直接在您的计算机上使用PIL并看到它可以解析您的文件。