Удалить дубликаты изображений



  • Добрый день. Есть 2 папки, в которых есть картинки, можно ли как то сравнить и удалить дубликаты? Не думаю что такая функция есть в BAS, по этому следующий вопрос: как бы можно было бы в теории это реализовать? Заранее спасибо за ваши ответы.



  • @mmaxsmile Почему нет? есть. Не дублей конечно нет, автоматом. Но вот сравнивать изображения бас умеет Блок работы с изображениями. Он может их сравнивать и даст ответ насколько одно совпадает с другим. в пр0центах. А дальше уже вам решать дубль это или нет.
    2020-01-25_190604.png



  • @tts9 да уж... проблема в том что изображений в одной папке 60 и во второй 60, и каждое из 1й папке нужно сравнить с 60тю во второй, не знаю на сколько долго это будет, но спасибо за подсказку.



  • @mmaxsmile Можно читать файл, затем получапать хэш md5(file) и добавлять это хэш в объект:

    Это общий смысл

    [[HASH]] = md5([[FILE]])
    [[FILES_MD5]] = {};
    if([[HASH]] in [[FILES_MD5]]) {
      //дубль
    } else {
      //новый
      [[FILES_MD5]][ [[HASH]] ] = 1
    }
    
    

    Но если файлов много, то лучше поискать какую-нибудь консольную утилитку написанную на С++ или еще на чем-нибудь быстром.



  • @mmaxsmile Если это все в один кубик запаковать то быстро даже в записи, но я про 60 на 60. Но я все в решал через базу и сравнивал по base64 вообще не используя этот модуль. Он так то капчу легкую обходить может))
    Если у вас всего 60 не тысячи быстро, а если много лучше воспользуйтесь советом от @UserTrue
    upd просто смотрите когда он сравнивает то он это изображение пишет на диске и подрубается написанным на с++ чем то там очень похожим на imagemagick т.е 2 действия а совет @UserTrue читаем 1 раз


Log in to reply