저는 flask
框架,图片处理用的是pillow
를 사용합니다.
일반적으로 업로드는 루프files
,然后逐个file.save()
我希望在save
完成后,执行pillow
압축 논리로 수행됩니다.
그런데save
是一个I/O操作,存在延迟性,如果直接在file.save()
下面直接调用pillow
的Image.open
는 이미지 데이터가 이미지에 기록되지 않아서 오류가 발생하는 것 같습니다.
무엇을 해야 할까요?
習慣沉默2017-05-18 10:54:27
으아악
저장 작업이 비동기적이지 않은 것을 알 수 있습니다
업데이트
copyfileobj는 차단 작업입니다
https://github.com/pallets/we...
阿神2017-05-18 10:54:27
실제로 이러한 유형의 이미지 처리에는 Alibaba Cloud의 OSS 또는 Qiniu 및 기타 유사한 저장 기능을 직접 사용하는 것이 더 좋습니다. 이미지를 OOS에 직접 업로드한 다음 향후에는 지정된 이미지 처리를 위해 특수 접미사를 호출합니다. 또한 주소 처리를 위해 OSS에 액세스하게 됩니다. 이는 이미지를 처리하기 위해 자체 서버를 사용하는 부담을 피할 수 있을 뿐만 아니라 액세스 압력을 줄여 프로그램의 복잡성을 줄이는 데에도 매우 유익합니다.
某草草2017-05-18 10:54:27
저자는 Image.open의 fp 매개변수를 살펴보았습니다. 파일 이름(문자열), pathlib.Path 객체 또는 파일 객체 PIL.Image.open(fp, mode='r')을 사용할 수도 있습니다.
파일을 Image.open(파일)에 직접 전달하면 됩니다!
으아악