@diod89, в лог вы выводите переменную с _, а в строку преобразовываете переменную без _
76065958-58f2-4f6b-b706-64a6bab366b9-image.png
устанавливаю библиотеку 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(`Сходство между изображениями`);
все выводится.
Подскажите пожалуйста в чем может быть проблема?
Спасибо.
@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();
@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();
})();
Думал может проблема в доступе к файлам но нет.. вот пример кода где пытаюсь сравнивать через 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);
});
@mocard said in Помогите понять почему не выводится в лог не ошибка не результат при использовании node.js:
@UserTrue Спасибо протестирую.!
Ранее выполнял все классическими функциями в BAS и периодически крашился BAS при сравнении фото. Хочется более качественное решение использовать.
А причем тут БАС, это библиотека на Nodejs... Просто ее в модуль обернули