Ich benutze flask
框架,图片处理用的是pillow
.
Im Allgemeinen erfolgt das Hochladen in einer Schleifefiles
,然后逐个file.save()
我希望在save
完成后,执行pillow
Komprimierungslogik.
Aber es scheintsave
是一个I/O操作,存在延迟性,如果直接在file.save()
下面直接调用pillow
的Image.open
, dass ein Fehler auftritt, weil die Bilddaten nicht in das Bild geschrieben wurden.
Was tun?
你看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)就可以了吧!