我用的是flask
框架,图片处理用的是pillow
。
一般上传都是在循环files
,然后逐个file.save()
我希望在save
完成后,执行pillow
的压缩逻辑。
但是似乎save
是一个I/O操作,存在延迟性,如果直接在file.save()
下面直接调用pillow
的Image.open
,会出错,因为图片数据还没有写入图片。
咋办?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你看save操作不是异步的吖
更新
copyfileobj是个阻塞操作
其实这类图片处理,直接使用阿里云的OSS或者七牛等类似的存储功能更好,直接将图片上传到OOS中,然后调用特别的后缀进行指定的图片处理,未来也访问OSS上处理后的地址。这样既可以规避用自己服务器处理图片的负荷,而且也降低了访问的压力,对于降低程序的复杂度也是大有好处的。
楼主看看Image.open 的fp参数,也可以A filename (string), pathlib.Path object or a file object PIL.Image.open(fp, mode='r')
你直接传file给Image.open(file)就可以了吧!