Это довольно сложный и изматывающий вопрос, поэтому, пожалуйста, внимательно прочитайте, а не просто просматривайте.Спасибо!
Я извлекаю изображения из файла PDF и перестраиваю изображение страницы.Это все работает, за исключением того, что я не могу получить координаты как раз для размещения маленьких изображений над большим фоновым изображением.
Я начинаю с чего-то вроде этого:
$page_width = 1000;
$page_height = 1500;
$back_img_x = 5
$back_img_y = 8
$back_img_width = 990;
$back_img_height = 1501;
$back_img_truewidth = 3000;
$back_img_trueheight = 4000;
$little_img_x = 550;
$little_img_y = 250;
$little_img_width = 200;
$little_img_height = 100;
Теперь, чтобы объяснить,заднее изображение не обязательно имеет тот же размер, что и страница, что означает, что оно масштабируется, оно также не обязательно находится в позиции 0,0, что связано с тем, кем был глупый человек, который первым сделал PDF (или какое приложение.)
Теперь я игнорирую размер страницы и пытаюсь отобразить маленькое изображение на заднем изображении в правильном положении после обрезки заднего изображения.
Так много сложных вещейтеперь выполняется обратное изображение, что приводит к следующему:
$trimleft = 100;
$trimright = 100;
$trimtop = 40;
$trimbottom = 120;
$margin_x = 50;
$margin_y = 35
$offset_x = 0;
$offset_y = 90;
Затем заднее изображение корректно обрезается и помещается на новый холст следующим образом:
$fullwidth=($trimright-$trimleft)+($margin_x*2);
$fullheight=($trimbottom-$trimtop)+($margin_y*2);
$trimmed=imagecreate($fullwidth,$fullheight);
imagefill($trimmed,0,0,imagecolorallocate($trimmed,255,255,255)); // make white
imagecopy($trimmed,$image,$margin_x+$offset_x,$margin_y+$offset_y,$trimleft,$trimtop,$trimright-$trimleft,$trimbottom-$trimtop);
Покахорошо ...
Теперь я хочу, чтобы x, y, ширина и высота маленького изображения были в правильном положении над фоновым изображением.
Я делаю тhis:
$little_img_width=($little_img_width/$back_img_width);
$little_img_height=($little_img_height/$back_img_height);
$little_img_x=(($little_img_x-$back_img_x)/$back_img_width)*$back_img_truewidth;
$little_img_y=(($little_img_y-$back_img_y)/$back_img_height)*$back_img_trueheight;
$little_img_width*=($back_img_truewidth/$fullwidth);
$little_img_height*=($back_img_trueheight/$fullheight);
$little_img_x=($little_img_x-$trimleft+$margin_x+$offset_x)/$fullwidth;
$little_img_y=($little_img_y-$trimtop+$margin_y+$offset_y)/$fullheight;
Это должно дать мне правильные x, y, ширину и высоту маленького изображения, правильно расположенного и измеренного на фоновом изображении (в процентах, где 0 далеко слева, а 1 далеко справа)и т. д.) Ширина / высота правильные, но координаты немного смещены.Это координата y, которая находится слишком низко на странице примерно на 5%.Обратите внимание, что $offset_x
равно 0, что указывает на то, что проблема заключается в переменных смещения (поскольку $offset_x
равно 0, ошибка позиционирования не отображается для оси x, только для оси y).
IВ течение нескольких дней я смотрел на эти значения и переписывал их все несколько раз.На этот раз все выглядит идеально для меня.Я не понимаю, что все еще не так.