Помогите понять почему не выводится в лог не ошибка не результат при использовании node.js

Поддержка
  • устанавливаю библиотеку node.js "jimp"
    e1e5d9bd-7e77-4038-9fd0-d2d058e02278-image.png

    Далее выполняю код, код не выдает ошибок или результата и так не только с этой библиотекой с другими такая же история.

    const Jimp = require('jimp');
    
    async function compareImages(imagePath1, imagePath2) {
      const [img1, img2] = await Promise.all([Jimp.read(imagePath1), Jimp.read(imagePath2)]);
    
      // Масштабируем изображения к одному размеру, если они разные
      if (img1.bitmap.width !== img2.bitmap.width || img1.bitmap.height !== img2.bitmap.height) {
        img1.scaleToFit(img2.bitmap.width, img2.bitmap.height);
      }
    
      const diff = Jimp.diff(img1, img2);
      const similarity = (1 - diff.percent) * 100;
    
      return similarity;
    }
    
    async function run() {
      try {
        const imagePath1 = 'C:/FOTO/1.jpg';
        const imagePath2 = 'C:/FOTO/2.jpg';
    
        const similarity = await compareImages(imagePath1, imagePath2);
        console.log(`Сходство между изображениями: ${similarity.toFixed(2)}%`);
      } catch (error) {
        console.error('Произошла ошибка:', error);
      }
    }
    
    run();
    

    Если выполнить просто

    console.log(`Сходство между изображениями`);
    

    все выводится.
    Подскажите пожалуйста в чем может быть проблема?
    Спасибо.

  • @mocard said in Помогите понять почему не выводится в лог не ошибка не результат при использовании node.js:

    устанавливаю библиотеку node.js "jimp"

    Далее выполняю код, код не выдает ошибок или результата и так не только с этой библиотекой с другими такая же история.

    const Jimp = require('jimp');
    
    async function compareImages(imagePath1, imagePath2) {
      const [img1, img2] = await Promise.all([Jimp.read(imagePath1), Jimp.read(imagePath2)]);
    
      // Масштабируем изображения к одному размеру, если они разные
      if (img1.bitmap.width !== img2.bitmap.width || img1.bitmap.height !== img2.bitmap.height) {
        img1.scaleToFit(img2.bitmap.width, img2.bitmap.height);
      }
    
      const diff = Jimp.diff(img1, img2);
      const similarity = (1 - diff.percent) * 100;
    
      return similarity;
    }
    
    async function run() {
      try {
        const imagePath1 = 'C:/FOTO/1.jpg';
        const imagePath2 = 'C:/FOTO/2.jpg';
    
        const similarity = await compareImages(imagePath1, imagePath2);
        console.log(`Сходство между изображениями: ${similarity.toFixed(2)}%`);
      } catch (error) {
        console.error('Произошла ошибка:', error);
      }
    }
    
    run();
    

    Если выполнить просто

    console.log(`Сходство между изображениями`);
    

    все выводится.
    Подскажите пожалуйста в чем может быть проблема?
    Спасибо.

    Потому что у вас синхронный вызов функции run();

  • удалил run(); и тоже самое..
    можете по подробнее объяснить в чем баг?

  • @mocard said in Помогите понять почему не выводится в лог не ошибка не результат при использовании node.js:

    удалил run(); и тоже самое..

    Зачем вы удалили вызов функции?

    можете по подробнее объяснить в чем баг?

    Вам именно объяснить или дать готовое решение?

    Объяснение: https://developer.mozilla.org/ru/docs/Learn/JavaScript/Asynchronous/Introducing

    Решение, вместо run();

    ;(async function(){await run()})();
    
  • Внес изменения и всё равно ничего не выводит, выполняется без ошибок и результата.

    const Jimp = require('jimp');
    
    async function compareImages(imagePath1, imagePath2) {
      const img1 = await Jimp.read(imagePath1);
      const img2 = await Jimp.read(imagePath2);
    
      // Масштабируем изображения к одному размеру, если они разные
      if (img1.bitmap.width !== img2.bitmap.width || img1.bitmap.height !== img2.bitmap.height) {
        img1.scaleToFit(img2.bitmap.width, img2.bitmap.height);
      }
    
      const diff = Jimp.diff(img1, img2);
      const similarity = (1 - diff.percent) * 100;
    
      return similarity;
    }
    
    async function run() {
      try {
        const imagePath1 = 'C:/FOTO/1.jpg';
        const imagePath2 = 'C:/FOTO/2.jpg';
    
        const similarity = await compareImages(imagePath1, imagePath2);
        console.log(`Сходство между изображениями: ${similarity.toFixed(2)}%`);
      } catch (error) {
        console.error('Произошла ошибка:', error);
      }
    }
    
    (async function() {
      await run();
    })();
    

    node.js

  • Думал может проблема в доступе к файлам но нет.. вот пример кода где пытаюсь сравнивать через base64 и таже история.

    const Jimp = require('jimp');
    
    async function compareImages(buffer1, buffer2) {
      const img1 = await Jimp.read(buffer1);
      const img2 = await Jimp.read(buffer2);
    
      // Масштабируем изображения к одному размеру, если они разные
      if (img1.bitmap.width !== img2.bitmap.width || img1.bitmap.height !== img2.bitmap.height) {
        img1.scaleToFit(img2.bitmap.width, img2.bitmap.height);
      }
    
      const diff = Jimp.diff(img1, img2);
      const similarity = (1 - diff.percent) * 100;
    
      return similarity;
    }
    
    // Замените [[FOTO1]] и [[FOTO2]] на фактические base64-строки
    const encodedImage1 = [[FOTO1]];
    const encodedImage2 = [[FOTO2]];
    
    const buffer1 = Buffer.from(encodedImage1, 'base64');
    const buffer2 = Buffer.from(encodedImage2, 'base64');
    
    compareImages(buffer1, buffer2)
      .then((similarity) => {
        console.log(`Сходство между изображениями: ${similarity.toFixed(2)}%`);
      })
      .catch((error) => {
        console.error('Произошла ошибка:', error);
      });
    
  • @Fox Будет минутка помогите плиз...
    чет не выходит как только не пробывал.
    в идеале готовое решение )) если не затруднит скину на кнопку благодарности )

  • @UserTrue Спасибо протестирую.!
    Ранее выполнял все классическими функциями в BAS и периодически крашился BAS при сравнении фото. Хочется более качественное решение использовать.

  • @mocard said in Помогите понять почему не выводится в лог не ошибка не результат при использовании node.js:

    @UserTrue Спасибо протестирую.!
    Ранее выполнял все классическими функциями в BAS и периодически крашился BAS при сравнении фото. Хочется более качественное решение использовать.

    А причем тут БАС, это библиотека на Nodejs... Просто ее в модуль обернули