Показать сообщение отдельно
  #1 (permalink)  
Старый 01.01.2020, 20:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Есть знающие Inkscape?
Есть проблема. В браузере на страницу выводится изображение размером 2048х1367 с разрешением 96dpi для выделения на нем областей. Работа на странице производится с уменьшенным размером по ширине W = 1000.

1) для текущего DPI 96 размер пикселя в мм: mmpx = 2.5399931 / 96 = 0.0264583333
2) уменьшаем изображение на: aspectratio = 1000 / 2048 = 0.48828125
3) высота будет равна: H = 1367 * aspectratio = 667
4) отображаем размеры изображения в см: 2048 * mmpx = 54.19 / 1367 * mmpx = 36.17
5) рабочая область ограничена с краев на 2 см, узнаем ее в пикселях с учетом масштаба: 2 / mmpx * aspectratio = 37
6) расстояние между областями не должно быть меньше 1 см, в пикселях: 1 / mmpx * aspectratio = 18
7) делаем выделения и отображаем их координаты/размеры в см (с учетом масштаба), рассчитывая их: px * mmpx / aspectratio
8) если проверить и сделать одно выделение на всю рабочую область, то все верно с расчетами
9) сделали 4 выделения и передали их на сервер (в см), рассчитывая для SVG позицию по вертикали и от низа:

[
        {
            "x": 2,
            "y": 12.14,
            "y_svg": 5.99,
            "w": 7.04,
            "h": 18.04
        },
        {
            "x": 10.02,
            "y": 2.11,
            "y_svg": 2.09,
            "w": 15.01,
            "h": 31.97
        },
        {
            "x": 26.06,
            "y": 11.11,
            "y_svg": 7.07,
            "w": 15.01,
            "h": 17.99
        },
        {
            "x": 42.05,
            "y": 8.07,
            "y_svg": 16.72,
            "w": 10.08,
            "h": 11.38
        }
]


Создаем документ в Inkscape в пикселях 2048х1367, проверяем это в см, показывает 57,79911 х 38,57978, что уже не равно рассчитанному 54.19х36.17 (собственно для 96dpi размеры 57,79911 х 38,57978 не верны). Импортируем в документ изображение с разрешением считанном из него - изображение соответствует при этом рамкам документа. Но если расставить в нем сделанные выделения, то левая нижняя координата первого выделения с малой погрешностью по высоте становится на место, а вот ширина и высота его, если судить по изображению, не равна выделенному на клиенте. Отсюда начинают "плясать" и координаты/размеры остальных выделений.

Ошибка в расчетах на клиенте? Тогда бы и выделение всей рабочей области не соответствовало бы показаниям. Не верно встраивается изображение в документ Inkscape или не верно определяются свойства его документа, тогда как это верно сделать?

PS. Выделения в Inkscape расставляются так, что сверху и справа документа остается больше чем 2 см, то есть, выделения по размеру меньше оказываются, чем показываются на клиенте.

Последний раз редактировалось laimas, 01.01.2020 в 21:27.
Ответить с цитированием