0
我有一个Flask应用程序,我试图对从Flask-WTF接收的文件执行一些PIL/Pillow操作 - > Flask-Uploads,但当我保存文件时,我缺少字节,图像无效。从Flask上传数据复制PIL图像后缺少字节
它似乎甚至破坏原始上传使图像的副本,没有额外的PIL的操作结果:
@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))
结果:
original_file: 4622336 bytes
saved_file: 886784 bytes
如果我删除img = Image.open(f).copy()
上传文件正确保存。
如果我只打开与PIL图像:
# PIL open (no copy)
img = Image.open(f)
文件也正确保存。
但是,如果我执行任何操作,复制或以其他方式,结果保存的文件是缺少字节和无效的图像。
我该如何实现这个所需的工作流程?
我想'f'是一个只能被读取一次的流。 'Image.open'实际上并不立即在图像中读取,而是'copy'强制它被使用。 –