Выравнивание динамических изображений с помощью GD

У меня есть приложение, в котором люди могут загрузить фотографию, и она встроена в другое изображение, которое они могут загрузить. Как добавить фотографию на открытку. Это можно увидеть на design.some.cards

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

Все работает, однако, когда они изменяют положение изображения в div, конечное изображение имеет черный контейнер встроенного изображения в правильном положении и размере, но фотография не совпадает с черным контейнером.

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

Как ни странно, когда пользователи используют смещения и выравнивают фотографию с черным контейнером, она выглядит правильно, но если они затем перемещают фотографию в элементе div, тогда черный контейнер выравнивается правильно, а фотография — нет.

Вот часть кода — параметры записываются с помощью js, а затем публикуются.

$theimage = '/path/'.$theimage; // background image
$jpg_image = imagecreatefromjpeg($theimage);

$photo =  "/path/uploads/".$_POST["photo"];
$jpg_photo = imagecreatefromjpeg($photo);
$rezphoto= "/path/uploads/resized-".$_POST["photo"];
$jpg_photo1 = imagecreatefromjpeg($rezphoto);

// resizing and moving the div sends coords to a form
$phototop =  $_POST["phototop"];
$photoleft =  $_POST["photoleft"];

// phBlLeftOffset & phBlTopOffset - users input to align the black if not lining up
// phLeftOffset & $phTopOffset - users input to align the photo within the black

//The dynamic resizing isn't posting accurate coords, realigning here
$photoPozLeft = $photoleft+63;
$photoPozTop = $phototop-26;
$photoPozLeftBlack = $photoleft+$phBlLeftOffset+360;
$photoPozTopBlack = $phototop+$phBlTopOffset+185;

imagecopy($jpg_image, $jpg_photo1, $photoPozLeftBlack, $photoPozTopBlack, $photoPozLeft+$phLeftOffset, $photoPozTop+$phTopOffset,$photowidth, $photoheight);

В идеале я бы хотел

imagecopy($jpg_image, $jpg_photo1, $photoPozLeftBlack, $photoPozTopBlack, $photoPozLeft, $photoPozTop,$photowidth, $photoheight);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …