У меня есть приложение, в котором люди могут загрузить фотографию, и она встроена в другое изображение, которое они могут загрузить. Как добавить фотографию на открытку. Это можно увидеть на 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);
Задача ещё не решена.
Других решений пока нет …