Flask-WTF -> Flask-Uploads에서받은 파일에서 일부 PIL/베개 작업을 수행하려고하는 Flask 응용 프로그램이 있지만 파일을 저장할 때 바이트가 누락되어 이미지가 유효하지 않습니다.Flask-Uploads 데이터에서 PIL 이미지의 복사본을 만든 후 누락 된 바이트
그것도 원래의 업로드를 손상에 추가 PIL 운영 결과와 이미지의 복사본을 만드는 것 같다: 나는 img = Image.open(f).copy()
을 제거하면
original_file: 4622336 bytes
saved_file: 886784 bytes
는 업로드 된 파일은 다음과 같습니다에
@sights_blueprint.route('/add', methods=['GET', 'POST'])
def add_image():
form = AddImageForm()
if request.method == 'POST':
if form.validate_on_submit():
# uploaded file
f = form.sights_image.data
filename = secure_filename(f.filename)
# PIL open + copy
img = Image.open(f).copy()
# save original file
f.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
결과 올바르게 저장되었습니다. 난 단지 PIL로 이미지를 열경우
:
# PIL open (no copy)
img = Image.open(f)
파일은 제대로 저장됩니다.
그러나 작업을 복사하거나 수행하면 결과로 저장된 파일에 바이트와 잘못된 이미지가 누락됩니다.
어떻게하면 원하는 워크 플로우를 얻을 수 있습니까?
'f'는 한 번만 읽을 수있는 스트림이라고 생각합니다. 'Image.open'은 이미지에서 즉시 읽을 수 없지만'copy'는 그것을 강제로 사용합니다. –