У нас в учетной системе есть фотографии товаров. Хранятся в БД. Подавляющее большинство фотографий содержит белые края, порой очень даже большие. Появилась потребность взять и избавиться от них, но сделать это программным путем.
Использую скрипт на питоне который анализирует фото, предварительно выгруженное из базы в файл, если края белые, то обрезает их до 20-ти пикселей и полученное изображение сохраняет в новый файл.
Но есть две проблемы:
1) В учетной систем после вызова WinAPI::shellExecute() с параметром _waitForCompletion = true, проверяем наличие созданного файла и его нет. Если поставить задержку 700-900 милисекунд, то файл появляется. Т.е учетная система получила отклик что выполнение закончилось, идет дальше по коду, а файла нет.
Мы думаем что после выполнения скрипта сборщик мусора производит свои манипуляции и только в этот момент происходит окончательная запись в файл. Может можно его как-то заставить мгновенно сохранять?
2) Фотографии хранятся в разных форматах (jpg и png). Скрипт преобразовывает png в jpg, при этом на фото появляются шумы.
Добавил в скрипт
fileCreated = False retryCnt = 5 idx = 1 while fileCreated == False and idx <= retryCnt: if os.path.isfile(outp_dir + '/' + file_name): fileCreated = True print('exist') else: time.sleep(300); print(300)
Пробую в учетной системе, таже беда что и была. Не видит файл.
Если в учетной системе добавить конструкцию подобною той что выше, то все норм. После 2-3 ожиданий учетная система видит файл и обрабатывает его.
Кто-нибудь сталкивался с подобной проблемой? Если да то как её решали? Либо у вас какой-нибудь другой способ?
P.S. Чукча не Python-щик)