@msnn

Как передать изображение в функцию Python из JS eel?

Нужна помощь в следующем вопросе

Я использую модуль Python eel для создания простого приложения, которое принимает изображение через WEB интерфейс и сохраняет его в новом файле через Python. При передаче переменной с файлом в функцию Python, я получаю следующую ошибку

TypeError: expected str, bytes or os.PathLike object, not dict

Насколько я понимаю, Python воспринимает изображение как словарь, который нельзя сохранить в файл, так как функция open() принимает str, bytes or os.PathLike object

Вопрос в том, как правильно передавать изображение из JS в Python, чтобы с ним можно было дальше работать, например сохранять как новый файл?

Получаю изображения из HTML

$(document).ready(function(){
        var dropZone = $('#upload-container');

      dropZone.on('drag dragstart dragend dragover dragenter dragleave drop', function(){
           return false;
      });

      dropZone.on('dragover dragenter', function() {
          dropZone.addClass('dragover');
        });

        dropZone.on('dragleave', function(e) {
          let dx = e.pageX - dropZone.offset().left;
          let dy = e.pageY - dropZone.offset().top;
          if ((dx < 0) || (dx > dropZone.width()) || (dy < 0) || (dy > dropZone.height())) {
            dropZone.removeClass('dragover');
          }
        });

        dropZone.on('drop', function(e) {
          dropZone.removeClass('dragover');
          let files = e.originalEvent.dataTransfer.files;
          print_hello(files);
        });

        $('#file-input').change(function() {
          let files = this.files;
          print_hello(files);
        });  
      })


Передаю переменную из JS в Python:

async function print_hello(files) {
          let res = await eel.start_func(files)();
          document.getElementById('helloprint').innerHTML = res;
      }


Пытаюсь открыть и сохранить изображение в Python

import eel
#import os
#import json
#from PIL import Image

@eel.expose
def start_func(file):

    with open(file, 'rb') as imgfile:
        output = open("file02.jpg","wb")
        output.write(imgfile.read())
        output.close()
    return "Файл получен"

eel.init("web")
eel.start("uniq.html", size=(1080, 1080))
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ответы на вопрос 1
daniilgorbenko
@daniilgorbenko
Программист, AI & BigData
Была аналогичная проблема
Для себя я нашел решение такое:
У меня на HTML страничке была кнопка "выбрать файл", после чего при нажатии на эту кнопку вызывался метод в python, который через tkinter открывал окно "openfiledialog", где получал полный путь к файлу и обрабатывал его там же через python.

https://www.pythontutorial.net/tkinter/tkinter-ope...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы