imagecopy() использования. Пример этой страницы выполняется с использованием опции прозрачности с imagecopymerge(), но я не думаю, что вам это нужно.
Использование imagecopy(), вы будете указать X/Y координаты, чтобы использовать для позиционирования:
imagecopy($borderimage, $topimage, 20, 20, 0, 0, $width, $height);
$width
Где и $height
будет вся ширина и высота верхнего изображения. Вы захотите заменить 20
и 20
на измерение того, какая часть изображения границы будет отображаться по границам. Вам, вероятно, придется изменить размер верхнего изображения на точные размеры, которые вы хотите, иначе он может перекрывать границу слишком далеко справа или снизу. (См imagecopyresampled())
Edit:
Вот грубый способ сделать весь процесс (при условии chosenborder.png
является границей они выбрали, и uploadedimage.png
образом они загружены Если это другой тип изображения вы будете использовать. corresponding function).
$borderx = 20; // The width of our border
$border = imagecreatefrompng("chosenborder.png");
$topimage = imagecreatefrompng("uploadedimage.png");
$bordersize = getimagesize($border);
$topimagesize = getimagesize($topimage);
/* The new dimensions of topimage. $borderx*2 means we account for
the border on both left and right, top and bottom. */
$newx = $bordersize[0] - ($borderx*2);
$newy = $bordersize[1] - ($borderx*2);
imagecopyresampled($topimage_scaled, $topimage, 0, 0, 0, 0,
$newx, $newy, $topimagesize[0], $topimagesize[1]);
/* Merge the images */
imagecopy($border, $topimage_scaled, $borderx, $borderx,
0, 0, $width, $height);
/* Output the image */
imagepng($border, "newimage.png");
/* Free up the memory occupied by the image resources */
imagedestroy($border);
imagedestroy($topimage);
После того как пользователь будет загружать свои изображения, найти chosenborder.png
и uploadedimage.png
, запустить выше сценарий, а затем отобразить newimage.png
пользователю, и вы хорошо идти. Просто убедитесь, что вы звоните imagedestroy()
на ресурсы временного изображения или они будут съедать память.
Если вы не хотите сохранять сгенерированное изображение на своем сервере, вы можете опустить второй аргумент в imagepng()
, который заставит его отправлять информацию об изображении непосредственно в виде изображения в браузер, и в этом случае вы захотите написать correct image HTTP headers.
Я думаю, что OP ищет PHP-скрипт, который объединит границу с оригиналом в одно изображение, чтобы пользователи могли сохранить все изображение в виде одного файла. –
может быть да или нет ... есть преимущества и недостатки в обоих решениях. С помощью css вы можете решить проблему в 1 строке, и вам не нужно ничего менять на стороне сервера, однако какой-то старый браузер может не поддерживать css3. с помощью GD наверняка это кросс-браузер, но вам нужно разработать каждое изображение, и вы увеличиваете разработку на стороне сервера – Cesar