Отображение изображения в Django
У меня есть следующий код, который должен вывести изображение.
from email.mime import image
from django.http import HttpResponse
import datetime
from django.template.loader import render_to_string
import base64
import math
import random
import matplotlib.pyplot as plt
no_of_balls = 25
x = [random.triangular() for i in range(no_of_balls)]
y = [random.gauss(0.5, 0.25) for i in range(no_of_balls)]
colors = [random.randint(1, 4) for i in range(no_of_balls)]
areas = [math.pi * random.randint(5, 15)**2 for i in range(no_of_balls)]
plt.figure()
plt.scatter(x, y, s=areas, c=colors, alpha=0.85)
plt.axis([0.0, 1.0, 0.0, 1.0])
plt.xlabel("X")
plt.ylabel("Y")
plt.savefig('test.png')
# with open("test.png", "rb") as image:
# b64string = base64.b64encode(image.read())
def math_is_fun(request):
now = datetime.datetime.now()
with open("test.png", "rb") as image:
b64string = base64.b64encode(image.read())
with open('encode.bin', "wb") as file:
file.write(b64string)
# file = open('encode.bin', 'rb')
# byte = file.read()
# file.close()
# decodeit = open('test.png', 'wb')
# decodeit.write(base64.b64decode((byte)))
# decodeit.close()
context = {
'time' : now,
'image' : decodeit,
}
HTML_STRING = render_to_string("home-view.html", context = context)
return HttpResponse(HTML_STRING)
Просто немного предыстории. Я создал изображение из некоторой математической формулы и сохранил его на диск. Затем, поскольку я использую render_to_string
в представлениях django, я предположил, что изображение должно быть преобразовано в строку. Что я и сделал, используя base64
.
У меня возникают трудности с рендерингом этого изображения. Когда страница загружается, я получаю только это May 25, 2022, 9:30 p.m. <_io.BufferedWriter name='test.png'>
Подскажите, пожалуйста, как я могу преобразовать это изображение обратно из строки и отобразить его?
Функция home-view
ссылается на следующее:
<html>
<head>
{{time}} {{image}}
</head>
</html>