Benutzer laden eine Bilddatei über das Formular hoch, ich möchte die ursprünglich hochgeladene Bilddatei nicht auf dem Datenträger speichern und die Größe des Bilds durch Pillow-Bild von der Festplatte ändern.Wie kann Pillow die hochgeladene Bilddatei direkt von StringIO öffnen?
Ich möchte zuerst diese Bilddatei im Speicher ändern und dann die Größe der Bilddatei auf der Festplatte speichern. also importiere ich StringIO als Puffer, aber es funktioniert nicht mit Pillow. Hier
ist der Code:
Python3.4, Flask == 0.10.1, Kissen == 3.4.2
forms.py
class Form():
img = FileField()
submit = SubmitField()
views.py
from io import StringIO
from PIL import Image
from .forms import Form
@app.route('/upload_img', methods=['GET', 'POST'])
def upload_img():
form = Form()
im = Image.open(StringIO(form.img.data.read())
pass
TypeError: initial_value must be str or None, not bytes
ja, I'vd versuchte mit BytesIO, aber immer noch mit OSError: nicht-Image-Datei <_io.BytesIO Objekt bei 0x03B07880> – rogwan
@rogwan dann den zurückgegebenen Daten von 'form.img.data.read identifizieren() 'ist kein gültiges Bild. Sie können dies testen, indem Sie einfach eine Datei im Binärmodus öffnen und den Rückgabewert dort schreiben. Wenn das Bild beschädigt wird, dann müssen Sie untersuchen, warum die Bilddaten nicht richtig übertragen werden. – Leva7
OK, danke für Ihre Ratschläge, Dateispeicher direkt zu öffnen wäre die ideale Lösung. – rogwan