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.
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]
Dies ist das erste Bild. Wählen Sie die Datei aus und klicken Sie auf Erkennen.
Ich denke, Sie werden ein solches Ergebnis sehen, sodass Sie das Bild basierend darauf anzeigen können.
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