Почему бы не преобразовать фоновое изображение в объект изображения? Я думаю, что способ достичь этого - вычитать верхнее и левое значение объекта из верхнего, левого значений холста. Когда у вас есть эти значения, вы можете найти координату мыши на исходном изображении, разделив ее на значение масштаба.
canvas.on('mouse:move', function(opt) {
console.log('Absolute X coordinate: ' + opt.e.layerX);
console.log('Absolute Y coordinate: ' + opt.e.layerY);
if (opt.target !== null) {
var objectMouseXRelativePosition = opt.e.layerX - opt.target.get("top");
var objectMouseYRelativePosition = opt.e.layerY - opt.target.get("left");
var objectMouseXAbsolutePosition = objectMouseXRelativePosition / opt.target.get("scaleX");
var objectMouseYAbsolutePosition = objectMouseYRelativePosition / opt.target.get("scaleY");
console.log('Current object X coordinate: ' + objectMouseXRelativePosition);
console.log('Current object Y coordinate: ' + objectMouseYRelativePosition);
console.log('Coordinate X on the original image: ' + objectMouseXAbsolutePosition);
console.log('Coordinate Y on the original image: ' + objectMouseYAbsolutePosition);
}
});
Возможно, вам потребуется выполнить некоторые проверки, чтобы установить значение выше исходное изображение, так как этот расчет приблизительный.
Пожалуйста, проверьте этот рабочий пример: https://codesandbox.io/s/stackoverflow-60364941-fabric-js-362-0pc4d