Comme il ne s'agit que d'un mémo, j'omettrai les paramètres détaillés de Django. Le projet est image_pred et le nom de l'application est myapp. Les paramètres ne sont que basiques, comme dans la première partie de la page officielle.
Depuis index.html, envoyez l'image à l'aide du formulaire.
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="Envoyer" />
</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='Veuillez sélectionner une image')
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]
Ceci est la première image. Sélectionnez le fichier et cliquez sur Reconnaître.
Je pense qu'un tel résultat sera affiché, vous pouvez donc afficher l'image en fonction de cela.
Étant donné que la création du projet, etc. repose sur ce matériel, de nombreuses parties du programme sont identiques. https://trafalbad.hatenadiary.jp/entry/2018/09/11/105500
Recommended Posts