Signature_pad: Использование проблемы с размером .fromDataURL()

Созданный на 26 нояб. 2014  ·  8Комментарии  ·  Источник: szimek/signature_pad

Привет, когда я использую .fromDataURL() для загрузки подписи, созданной на холсте того же размера с использованием этой замечательной библиотеки, размер изображения не соответствует размеру и составляет 1/4 размера.

Я не уверен, библиотека это или нет, но я изменяю размер холста перед первоначальной подписью и перед загрузкой подписи в память.

Это какая-то проблема в моей логике или кто-нибудь видел это раньше?

Самый полезный комментарий

Чтобы сделать изображение одинакового размера, вы можете добавить параметры
signaturePad.fromDataURL(data, {width: 100, height: 100})
ширина, высота должны быть такими же, как размер холста
Подробнее:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts

Все 8 Комментарий

Кстати, это связано с тем, что window.devicePixelRatio по какой-то причине не совпадает.

Все еще исследую, я думаю, что это может быть проблема с моим кодом :(

Вы используете последнюю версию (1.3.4)? 1.3.3 должен был исправить fromDataURL , когда window.devicePixelRatio отличается от 1, но это было (надеюсь) действительно исправлено в 1.3.4.

Я использую самую новую версию.

Когда я правильно исправляю соотношение (как в вашей демонстрации), мой палец не совпадает с тем местом, где появляется линия.

Я просто делаю простую демонстрацию, так что это не так важно, и я поиграю с ней позже.

Вот простая демонстрация: http://jsfiddle.net/szimek/baL7r8xd. Когда вы нажимаете кнопку «заменить», он очистит холст и вернет изображение через 1 с. Он отлично работает на iPhone с window.devicePixelRatio из 2.

Странно, у меня на андроиде тоже работает.

Спасибо, буду разбираться :)

Для тех, кто случайно столкнулся с этой проблемой, я понял, что я делаю неправильно.

Прежде чем вводить данные с помощью .fromDataURL(data) , необходимо убедиться, что вы правильно масштабируете холст:

      function resizeCanvas(canvas) {
        var ratio =  window.devicePixelRatio || 1;
        canvas.width = canvas.offsetWidth * ratio;
        canvas.height = canvas.offsetHeight * ratio;
        canvas.getContext('2d').scale(ratio, ratio);
      }

      resizeCanvas(canvas);

Чтобы сделать изображение одинакового размера, вы можете добавить параметры
signaturePad.fromDataURL(data, {width: 100, height: 100})
ширина, высота должны быть такими же, как размер холста
Подробнее:
https://github.com/szimek/signature_pad/blob/master/src/signature_pad.ts

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Zuldra picture Zuldra  ·  4Комментарии

kevinchung1026 picture kevinchung1026  ·  5Комментарии

50l3r picture 50l3r  ·  3Комментарии

erangaapp picture erangaapp  ·  8Комментарии

davidosuna1987 picture davidosuna1987  ·  11Комментарии