Я использую инструмент для работы с изображениями и хочу стереть фон с изображения, на котором щелкнул мышью холст.
Мой холст автоматически подгоняется под окна.Если изображение слишком велико, оно автоматически будет уменьшено, чтобы поместиться в порт просмотра.
Теперь, когда мой холст уменьшен, мое изображение размыто.Я вычисляю положение мыши, используя следующий код:
mouse:move': (evt) => {
var canvasOffset = $('#eraserCanvas').offset();
var x = evt.e.pageX - canvasOffset.left;
var y = evt.e.pageY - canvasOffset.top;
var pixel = ctx.getImageData(x, y, 1, 1);
}
Но здесь проблема в том, что мой context
также мал, как и размер холста (уменьшен), поэтому данные моего изображения в пикселях имеют маленькое изображение, которое можетрезультат размытия окончательного вывода.
После долгих поисков и размышлений я обнаружил, что одним из решений является то, что если мы продолжим масштабирование контекста до исходного размера изображения.Только холст изменяет размер, тогда наш окончательный результат ясен.
Теперь проблема в том, что мое положение мыши соответствует моему масштабированному холсту.Поэтому необходимо рассчитать положение мыши в исходном размере холста, чтобы получить правильный пиксель в масштабированном холсте.но я не знаю, как вычислить позицию указателя в масштабированном холсте, это какая позиция в оригинальном размере холста или контекста.
См. изображение ниже для большего понимания:
Здесь холст оригинального размера не будет отображаться пользователю.но процесс удаления пикселя выполняется на холсте оригинального размера.
Весь сценарий (на изображении выше)
- отображать небольшой (zoomedOut) холст пользователю.
- Пользователь выбирает пиксель из этого холста (изображения).
- мы сначала получаем положение указателя мыши на масштабированном холсте (изображении).
- теперь
what
будет позиционировать указатель мыши в исходном холсте, если мы масштабируемуменьшенный холст до исходного размера холста?
этот четвертый шаг - расчет, который я не знаю как?
Пожалуйста, помогите мне.