Как я могу получить точку из файла PSD
Я прочитал, но я до сих пор не понял этот пункт:
Все точки, используемые при определении пути, хранятся в восьми байтах в виде пары 32-битных компонентов, в первую очередь вертикального компонента. Два компонента имеют знаковые числа с фиксированной запятой с 8 битами перед двоичной точкой и 24 битами после двоичной точки. Три защитных бита зарезервированы в точках, чтобы устранить большинство проблем по арифметическому переполнению. Следовательно, диапазон для каждого компонента составляет от 0xF0000000 до 0x0FFFFFFF, представляющий диапазон от -16 до 16. Нижняя граница включена, но не верхняя граница. Этот ограниченный диапазон используется, потому что точки выражены относительно размера изображения. Вертикальный компонент задается относительно высоты изображения, а горизонтальный компонент задается относительно ширины изображения. [ 0,0 ] представляет левый верхний угол изображения; [ 1,1 ] ([ 0x01000000,0x01000000 ]) представляет справа внизу. В Windows порядок байтов компонентов точек пути меняется на обратный; Вы должны поменять местами байты при доступе к каждому 32-битному значению.
Я сделал тест этого: ссылка
и понять суть этого:
- x1: 7e0e42 y1: 0
- x2: 7e0e42 y2:0
x3: 7e0e42 y3:0
х1: 1000000 у1: 0
- х2:1000000 у2:0
- х3:1000000 у3:0
- первая в левом верхнем углу красного прямоугольника;
- вторая наверху
- справа от красного прямоугольника;
- ширина холста 790 пикселей
- верхний левый в 389px
Как я могу получить номер 389 от 7e0e42? Я просто не могу понять смысл этого абзаца.
большое спасибо
1 ответ
Немного поздно, но:
Ты первый x
значение 0x007e0e42
в представлении с фиксированной точкой, упомянутым в тексте. Это означает 0 + 0x7e0e42 / 0xffffff
или 0,49240505695343 (приблизительно) в плавающей запятой.
Помните, что координаты даны "относительно размера изображения". Если вы умножите это на ширину изображения 790, вы получите 388,9999999993209839, которая должна округляться до 389, как и ожидалось.
Тайна разгадана.:-)