Я сделал html-сайт, на котором можно загрузить изображение и преобразовать его в линии для плоттера. Я использую linedraw, модифицированный evildmp. К сожалению, после загрузки ничего не происходит. Он должен показать мне версию моего изображения в формате «линии» (svg).
Поэтому я создал функцию imagetosvg, которая возвращает svg-файл. Я новичок в pyscript и не могу найти проблему.
Примеры файловых систем
Выберите файл:
Изображение:
main.py:
из случайного импорта * импорт математики импортировать argparse импортировать JSON время импорта импортировать асинхронный код импортировать JS из документа импорта js из импорта pyodide create_proxy из PIL импортировать изображение, ImageDraw, ImageOps # настройки файла экспорт_путь = "изображения/out.svg" svg_folder = "изображения/" json_folder = "изображения/" # РЕЗЮМЕ no_cv = Ложь пытаться: импортировать numpy как np импортировать cv2 кроме: print("Невозможно импортировать numpy/openCV. Переключение в режим NO_CV.") no_cv = Истина асинхронная защита read_complete (событие): # событие — ProgressEvent # console.log('read_complete') print("Я имею") imageFile = event.target.result изображение = document.getElementById("изображение") image.src = image_to_svg(imageFile, draw_contours=2, draw_hatch=16) асинхронная защита процесса_файла (х): fileList = document.getElementById('myfile').files для f в списке файлов: # программа чтения — это pyodide.JsProxy читатель = js.FileReader.new() # Создайте прокси-сервер Python для функции обратного вызова onload_event = create_proxy(read_complete) reader.onload = onload_event читатель.readAsDataURL(f) возвращаться настройка защиты(): # Создайте прокси-сервер Python для функции обратного вызова file_event = create_proxy(process_file) # Установите прослушиватель на обратный вызов e = document.getElementById("мойфайл") e.addEventListener("изменение", file_event, False) настраивать() # -------------- выходные функции -------------- #Мой собственный def image_to_svg (имя_файла_изображения, разрешение = 1024, draw_contours = False, restart_contours = 1, draw_hatch = False, restart_hatch = 1): линии = векторизация (имя_файла_изображения, разрешение, draw_contours, повтор_контуров, draw_hatch, повтор_штриховка) svg_data = makevg(линии) вернуть svg_data защита image_to_json( имя_файла_изображения, разрешение=1024, draw_contours = Ложь, повтор_контуры = 1, draw_hatch = Ложь, повтор_штриховка=1, ): линии = векторизовать( имя_файла_изображения, разрешение, рисовать_контуры, повтор_контуры, нарисовать_штриховку, повтор_штриховка, ) имя_файла = папка_json + имя_файла_изображения + ".json" lines_to_file(строки, имя файла) защита makevg(строки): print("Создание svg-файла...") width = math.ceil(max([max([p[0] * 0,5 для p в l]) для l в строках])) height = math.ceil(max([max([p[1] * 0,5 для p в l]) для l в строках])) out = '' % ( высота, ширина, ) для l в строках: l = ",".join([str(p[0] * 0,5) + "," + str(p[1] * 0,5) для p в l]) out += '\n' выход += "" вернуться ... см. https://raw.githubusercontent.com/evild ... inedraw.py
Мобильная версия