【问题标题】:TypeError: a bytes-like object is required, not '_io.BytesIO' | Django | PillowTypeError:需要一个类似字节的对象,而不是'_io.BytesIO' |姜戈 |枕头
【发布时间】:2021-08-17 09:07:19
【问题描述】:

我一直在处理一个 Django 项目,我需要手动保存一个图像文件。所以,我尝试使用 PIL。这是我的 Django 视图中中断的代码-

import PIL.Image as PilImage
image_file = request.FILES.get("pic").file
image = PilImage.open(io.BytesIO(image_file))

我不明白,因为 io.BytesIO 是一个类似字节的对象,对吧?我在任何地方都找不到任何解决方案,因此我将不胜感激。

完整的错误如下 -

Traceback (most recent call last):
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "G:\Workspace\Rabo\venv\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "G:\Workspace\Rabo\App\utils\login_required.py", line 25, in wrapper
    return f(self, request, user_id)
  File "G:\Workspace\Rabo\App\views\user_views.py", line 125, in post
    image = PilImage.open(io.BytesIO(image_file))
TypeError: a bytes-like object is required, not '_io.BytesIO'

编辑:我现在使用this method 保存图像,但我仍然想知道为什么 PIL 会出现该错误。如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

    标签: python django python-imaging-library


    【解决方案1】:

    您没有从io.BytesIO(image_file) 读取数据。 io.BytesIO(image_file).read() 应该做的工作

    【讨论】:

    • 我做了 image = PilImage.open(io.BytesIO(image_file).read()) 仍然显示同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多