首先,我的情况描述如下:
我正在开发一个 Django 应用演示。该演示可以从用户接收图像文件。然后我的 Django 应用程序将处理此图像,例如添加一些文本或更改图像大小。
我是 Django 的新手,文件流和响应。我尝试做一些搜索和研究。但我找不到合适的案例。也许我没有用准确合适的关键词来描述我的问题。
我不想先把处理后的图片保存到本地磁盘,然后再把文件的本地路径取回Django web。我想将图像直接返回到内存中的浏览器。
顺便说一句,django 似乎不建议直接读取本地磁盘上的媒体文件。css 和 js 都需要配置 static_path 才能正常工作。另外,根据我的调查,直接在内存中处理和返回文件似乎是一种比较主流的做法。当然,我刚刚接触这个领域。情况可能并非如此。我只想介绍一些想法来帮助描述这个棘手的问题。
我的错误是这样的:现在我的 django 应用程序可以获取用户的图像并顺利处理它。我还找到了一种将“PIL 图像对象”转换为“BytesIO 对象”的很酷的方法。感谢 Stackoverflow。我在 Stackoverflow 上找到了有关 BytesIO 的方法。
下一步是,我想返回这个处理过的图像。现在,图像的最后一个状态是“BytesIO 对象”。
像这样的代码:
# Python CODE
# above is processing with PIL
# the image is the Image object
image = Image.composite(image, bg, image)
# below is my new code
# I wrote the on the head: import Bytes IO
byte_file = BytesIO()
image.save(byte_file, format='PNG')
image_data = byte_file.getvalue()
return image_data
Run Code Online (Sandbox Code Playgroud)
并且 html …