Найти - Пользователи
Полная версия: Обработка и сохранение изображений
Начало » Python для новичков » Обработка и сохранение изображений
1
smailik
Всем доброго дня.
У нас в учетной системе есть фотографии товаров. Хранятся в БД. Подавляющее большинство фотографий содержит белые края, порой очень даже большие. Появилась потребность взять и избавиться от них, но сделать это программным путем.
Использую скрипт на питоне который анализирует фото, предварительно выгруженное из базы в файл, если края белые, то обрезает их до 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)
Погонял его через командную строку. Во время всех тестов всегда печатал только “exist”. Ни разу не печатал “300”. Проверял на 16 фотографиях за раз.
Пробую в учетной системе, таже беда что и была. Не видит файл.
Если в учетной системе добавить конструкцию подобною той что выше, то все норм. После 2-3 ожиданий учетная система видит файл и обрабатывает его.

Кто-нибудь сталкивался с подобной проблемой? Если да то как её решали? Либо у вас какой-нибудь другой способ?

P.S. Чукча не Python-щик)
AD0DE412
не чего не понятно

зы вам наверное нужно успокоиться перечитать свое сообщение и разложить для себя по полочкам … ну и сюда после …
(задайте себе вопрос - что из вашего сообщения поймет постороний человек?)

ззы не знаю что у вас за проблемы но time.sleep(300) это точно не решение (и даже не костыль) так как зависит от машины и не зависит от работы программы
py.user.next
smailik
Но есть две проблемы:
1) В учетной систем после вызова WinAPI::shellExecute() с параметром _waitForCompletion = true, проверяем наличие созданного файла и его нет. Если поставить задержку 700-900 милисекунд, то файл появляется. Т.е учетная система получила отклик что выполнение закончилось, идет дальше по коду, а файла нет.
Мы думаем что после выполнения скрипта сборщик мусора производит свои манипуляции и только в этот момент происходит окончательная запись в файл. Может можно его как-то заставить мгновенно сохранять?
У тебя один скрипт должен преобразовывать фотографию правильно и больше ничего не делать.

smailik
2) Фотографии хранятся в разных форматах (jpg и png). Скрипт преобразовывает png в jpg, при этом на фото появляются шумы.
Сначала ты должен приготовить фотографию для преобразующего скрипта, чтобы она была в правильном формате.

Ты пытаешься на один скрипт возложить всю работу. Нужно сделать несколько скриптов, где каждый скрипт приготавливает материал для следующего скрипта. Эти скрипты не должны знать друг про друга. Скрипт, преобразующий фотографию, не должен знать, откуда она взята и куда она дальше будет передана.

И только когда у тебя все эти скрипты готовы, тогда ты и можешь написать ещё один скрипт, который всеми этими независимыми скриптами управляет по очереди.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB