用户前端传过来的图片需要压缩剪裁处理,不落盘,直接用 Pillow 的 Image 打开 BytesIO 可以处理吗?

2020-09-24 11:04:52 +08:00
 miniyao
当前的操作是先把用户前端传过来的图片落盘保存,然后用 Image.open() 打开处理。

如果把用户前端传过来的图片,不落盘,直接用 Image 处理,可以吗?
2043 次点击
所在节点    Python
8 条回复
1462326016
2020-09-24 12:01:06 +08:00
可以啊,open 函数参数 fp 也可以是一个文件对象,只要实现了 read,seek,tell 就可以
```
from PIL import Image
from io import BytesIO

img_content = b'k11111'
img = Image.open(BytesIO(img_content))
img.xxx
```
qsfun
2020-09-24 13:02:01 +08:00
不落盘可能得考虑内存问题。不过如果你直接把 http 的流直接 pipe 给 image,倒是没有内存问题,不了解是否支持这样操作
nicoljiang
2020-09-24 14:45:19 +08:00
这种还是用专门的云存储比较好吧。
bjt
2020-09-24 15:05:01 +08:00
不落盘多半是为了节省硬盘 io 吧, 可以考虑用 tmpfs 内存盘
zouri
2020-09-24 15:08:01 +08:00
可以直接裁剪完再分别保存
qiayue
2020-09-24 15:10:34 +08:00
前端直接传到七牛等云存储
misaka19000
2020-09-24 15:12:07 +08:00
当然可以
linvaux
2020-09-24 15:30:08 +08:00
不怕内存爆了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/710036

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX