Django не отправляет отрендеренный массив в Angular
Я пытаюсь создать API на Django, который получает изображение, применяет фильтр и возвращает изображение с фильтром на frontEnd, который сделан на Angular. Но когда я вызываю API, моя модель получает изображение, но не применяет фильтр и не возвращает измененное изображение. При этом метод POST не возвращает ничего, даже ошибку
Вот мой models.py:
def apply_filter(noisy_image, kernel):
smoothed_image = np.zeros_like(noisy_image)
for channel in range(noisy_image.shape[2]):
for row in range(noisy_image.shape[0] - kernel.shape[0] + 1):
for col in range(noisy_image.shape[1] - kernel.shape[1] + 1):
sub_matrix = noisy_image[row:row + kernel.shape[0], col:col + kernel.shape[1], channel]
smoothed_image[row + 1, col + 1, channel] = np.sum(sub_matrix * kernel)
fig, ax = plt.subplots()
ax.imshow(smoothed_image.astype(np.uint8))
ax.axis('off')
return fig
def default_image(image_array):
# Load image
fig, ax = plt.subplots()
ax.imshow(image_array.astype(np.uint8))
ax.axis('off') # Hide axes
return fig
def suavizado1(image_array):
kernel_size = 12
kernel = np.ones((kernel_size, kernel_size)) / (kernel_size ** 2)
noise = np.random.normal(0, 10, size=image_array.shape)
noisy_image = image_array + image_array * noise
return apply_filter(noisy_image, kernel)
Вот мой views.py:
def processImage(request):
if request.method == 'POST':
uploaded_file = request.FILES['image']
filter_name = request.POST.get('filter')
image_path = default_storage.save('uploaded_images/' + uploaded_file.name, ContentFile(uploaded_file.read()))
print(image_path)
#Load image
imagen = Image.open(image_path)
image_array = np.array(imagen)
print(image_array)
# aplica el filtro seleccionado
if filter_name == 'smooth':
output = models.suavizado1(image_array)
elif filter_name == 'reset':
output = models.default_image(image_array)
else:
# Valor predeterminado al cargar la pagina
output = models.default_image(image_array)
JsonResponse({'result': 'success'})
buffer = io.BytesIO()
output.savefig(buffer, format='png')
buffer.seek(0)
image_png = buffer.getvalue()
buffer.close()
graphic = base64.b64encode(image_png).decode('utf-8')
return render(request, 'index.html', {'graphic': graphic})