[PYTHON] Konvertieren Sie Bilder aus dem PIL-Format, die mit Django aus dem Formular gelesen wurden, in das base64-Format

Einführung

Da es sich nur um ein Memo handelt, werde ich die detaillierten Einstellungen von Django weglassen. Das Projekt ist image_pred und der App-Name ist myapp. Die Einstellungen sind nur grundlegend, wie im ersten Teil der offiziellen Seite.

Programm

Senden Sie das Bild aus index.html mithilfe des Formulars.

index.html


{% load static %}
<!doctype html>
<html lang="ja">
<head>
 <meta charset="utf-8">
 <title>title</title>
</head>
<body>
   <div id = "input_form">
      <form action="{% url 'index' %}" method="POST" enctype="multipart/form-data">
         {% csrf_token %}
         {{ form }}
         <input type="submit" value="Senden" />
      </form>
   </div>
   <!--<div id = "prevent"><img src="{{question_id}}"></div>-->
   <div id = "predict">{{urls}}</div>
</body>
</html>

forms.py


from django import forms

class PhotoForm(forms.Form):
    image = forms.ImageField(label='Bitte wählen Sie ein Bild')

views.py


from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import PhotoForm

class MyappView(TemplateView):
    def __init__(self):
        self.params={'form': PhotoForm()}
        
    def get(self, req):
        return render(req, 'index.html', self.params)

    def post(self, req):
        form = PhotoForm(req.POST, req.FILES)
        if not form.is_valid():
            raise ValueError('invalid form')

        image = form.cleaned_data['image']
        self.url_get(req, image)
        return render(req, 'index.html', self.params)

    def url_get(self, req, url):
        from PIL import Image
        import base64
        import io
        from io import BytesIO

        img = Image.open(url)
        with io.BytesIO() as output:
            img.save(output,format="JPEG")
            contents = output.getvalue()
            data = base64.b64encode(contents)
            #print('data:image/jpeg;base64,' + str(data)[2:-1])
            self.params['urls'] = 'data:image/jpeg;base64,' + str(data)[2:-1]

Ergebnis

Dies ist das erste Bild. Wählen Sie die Datei aus und klicken Sie auf Erkennen. キャプチャ.PNG

Ich denke, Sie werden ein solches Ergebnis sehen, sodass Sie das Bild basierend darauf anzeigen können. キャプチャ3.PNG

Verweise

Da die Erstellung von Projekten usw. auf diesem Material basiert, gibt es viele Teile des Programms, die gleich sind. https://trafalbad.hatenadiary.jp/entry/2018/09/11/105500

Recommended Posts

Konvertieren Sie Bilder aus dem PIL-Format, die mit Django aus dem Formular gelesen wurden, in das base64-Format
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
Konvertieren Sie den Farbraum von RGB nach CIELAB mit PIL (Pillow)
Konvertieren Sie Bilder mit PIL (Python Imaging Library) in Sepia.
So konvertieren Sie das Format einfach aus Markdown
Konvertieren Sie mit pdfplumber von PDF in CSV
Mit FastAPI können nicht mehrere Bilder aus dem Formular hochgeladen werden
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Konvertieren Sie Model sofort mit Django in Dictionary und initialisieren Sie Form mit explosiver Geschwindigkeit
Mit matplotlib erstellte Bilder werden von dvi nach pdf verschoben
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Konvertieren Wählen Sie die von Postgre erhaltene Abfrage mit Gehe zu JSON
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
[Caffe] Konvertiert die mittlere Datei vom binären Proto-Format in das npy-Format
[Django] Nach dem Absenden mit dem POST-Formular zur vorherigen Seite weiterleiten
Kombiniere zwei Bilder mit Django
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 1
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 2
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Konvertieren Sie .ipynb in .html (mit BatchFile)
[Django] So testen Sie Form [TDD]
Standardisieren Sie HTML, um mit Django gemietet zu werden
Konvertieren Sie die Liste mit Python in DataFrame
Konvertieren Sie Sätze mit gensim in Vektoren
Wie fange ich mit Django an?
Poste ein Bild von Python auf Tumblr
So konvertieren Sie von .mgz nach .nii.gz
Konvertieren Sie PDF in Image mit ImageMagick
Laden Sie fbx aus Python mitinema4d
Ich habe versucht, mit django eine E-Mail zum Abschluss der Registrierung von Google Mail zu senden.
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Vorverarbeitung mit Python. Konvertieren Sie die Tag-Suchergebnisse von Nico Nico-Videos in das CSV-Format