PIL无法通过绝对路径打开图像 - IOError [Errno 2] 没有此文件或目录

0 投票
1 回答
1173 浏览
提问于 2025-04-19 04:49

我正在尝试用 sorl thumbnail 创建的图片,使用PIL来打开它。

以下是代码的一部分:

print user.image
print user.image.url
print user.get_images(size='500')
print user.get_images(size='500').url

这个代码的输出是:

images/users/DSC_0889.JPG
/media/images/users/DSC_0889.JPG
<sorl.thumbnail.images.ImageFile object at 0x11288df10>
/media/cache/f9/ed/f9ed5e89154c42a2aff758b193618b12.jpg

用PIL打开它的结果如下:

尝试 1:

im = Image.open(user.image)

这个方法运行得很好。

尝试 2:

im = Image.open(user.get_images(size='500'))

这个方法出现了错误:

TypeError at /scripts/user/crop-image/
read() takes exactly 1 argument (2 given)

Traceback:
File "/Users/jaskaran/Desktop/coding/buyingiq/buyingiq/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/jaskaran/Desktop/coding/buyingiq/buyingiq/env/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "/Users/jaskaran/Desktop/coding/buyingiq/buyingiq/views/www/user.py" in crop_image
  114.         im = Image.open(user.get_images(size='500'))
File "/Users/jaskaran/Desktop/coding/buyingiq/buyingiq/env/lib/python2.7/site-packages/PIL/Image.py" in open
  2097.     prefix = fp.read(16)

尝试 3:

 im = Image.open(user.get_images(size='500').url)

这个方法也出现了错误:

IOError at /scripts/user/crop-image/
[Errno 2] No such file or directory: '/media/cache/f9/ed/f9ed5e89154c42a2aff758b193618b12.jpg'

如果我在浏览器中输入 127.0.0.1:8000/media/cache/f9/ed/f9ed5e89154c42a2aff758b193618b12.jpg,图片可以正常打开,所以这个图片是存在的。

我该如何用PIL打开这张图片呢?

1 个回答

2

我的 media 文件夹放在了主项目目录的外面。

通过像这样访问它 settings.MEDIA_ROOT + str(user.get_images(size='500').name),问题就解决了。

撰写回答