Мы надеемся, что это сообщение найдет вас хорошо! /> Мы пытаемся достичь того же самого для одного из нашего веб -сайта. Мы смогли разместить изображение на изображении, однако, не удалось показывать баннер как идеальное, как на изображении выше.
Здесь, наше сгенерированное изображение. Не выровнен, как это есть в ссылке.function mergeImage($sideImg = null, $backImg = null)
{
$directory = __DIR__ . '/images/';
for ($idx = 1; $idx 0) {
$sidBnrImg = imagerotate($sidBnrImg, $rotation, 0);
}
$sidBnrImg = imagescale($sidBnrImg, $scaleWidth, $scaleHeight);
imagecopymerge($baseImg, $sidBnrImg, $dstX, $dstY, 0, 0, $scaleWidth, $scaleHeight, 90);
imagedestroy($sidBnrImg);
}
// append back image
if ($backImg !== null) {
$bckBnrImg = imagecreatefromjpeg($backImg);
$scaleData = getBackBannerScale($idx);
$scaleWidth = $scaleData['scaleWidth'];
$scaleHeight = $scaleData['scaleHeight'];
$dstX = $scaleData['dstX'];
$dstY = $scaleData['dstY'];
$rotation = $scaleData['rotation'];
if ($rotation > 0) {
$bckBnrImg = imagerotate($bckBnrImg, $rotation, 0);
}
$bckBnrImg = imagescale($bckBnrImg, $scaleWidth, $scaleHeight);
imagecopymerge($baseImg, $bckBnrImg, $dstX, $dstY, 0, 0, $scaleWidth, $scaleHeight, 90);
}
imagepng($baseImg, './processed/' . $idx . '.png');
imagedestroy($baseImg);
}
}
mergeImage('./0.jpg');
function getSideBannerScale($indx)
{
$scaleData = [
1 => [
'scaleWidth' => 550,
'scaleHeight' => 251,
'dstX' => 292,
'dstY' => 114,
'rotation' => 0
],
2 => [
'scaleWidth' => 505,
'scaleHeight' => 248,
'dstX' => 353,
'dstY' => 114,
'rotation' => 0
],
3 => [
'scaleWidth' => 375,
'scaleHeight' => 225,
'dstX' => 428,
'dstY' => 122,
'rotation' => 0,
],
4 => [
'scaleWidth' => 222,
'scaleHeight' => 215,
'dstX' => 505,
'dstY' => 125,
'rotation' => 0
],
5 => [
'scaleWidth' => 155,
'scaleHeight' => 225,
'dstX' => 570,
'dstY' => 122,
'rotation' => 2
],
6 => [
'scaleWidth' => 50,
'scaleHeight' => 210,
'dstX' => 272,
'dstY' => 127,
'rotation' => 342
],
7 => [
'scaleWidth' => 220,
'scaleHeight' => 215,
'dstX' => 173,
'dstY' => 130,
'rotation' => 0
],
8 => [
'scaleWidth' => 415,
'scaleHeight' => 232,
'dstX' => 57,
'dstY' => 120,
'rotation' => 0
],
9 => [
'scaleWidth' => 492,
'scaleHeight' => 248,
'dstX' => 53,
'dstY' => 115,
'rotation' => 0
],
10 => [
'scaleWidth' => 552,
'scaleHeight' => 253,
'dstX' => 56,
'dstY' => 114,
'rotation' => 0
],
11 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 230,
'dstY' => 122,
'rotation' => 0
],
12 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
13 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
14 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
15 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
16 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
17 => [
'scaleWidth' => 470,
'scaleHeight' => 225,
'dstX' => 200,
'dstY' => 122,
'rotation' => 0
],
18 => [
'scaleWidth' => 528,
'scaleHeight' => 246,
'dstX' => 257,
'dstY' => 117,
'rotation' => 0
]
];
return $scaleData[$indx];
}
function getBackBannerScale($indx)
{
$scaleData = [
1 => [
'scaleWidth' => 550,
'scaleHeight' => 251,
'dstX' => 292,
'dstY' => 114,
'rotation' => 0
],
2 => [
'scaleWidth' => 505,
'scaleHeight' => 248,
'dstX' => 353,
'dstY' => 114,
'rotation' => 0
],
3 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
4 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
5 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
6 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
7 => [
'scaleWidth' => 220,
'scaleHeight' => 215,
'dstX' => 173,
'dstY' => 130,
'rotation' => 0
],
8 => [
'scaleWidth' => 415,
'scaleHeight' => 222,
'dstX' => 57,
'dstY' => 120,
'rotation' => 0
],
9 => [
'scaleWidth' => 488,
'scaleHeight' => 242,
'dstX' => 57,
'dstY' => 115,
'rotation' => 0
],
10 => [
'scaleWidth' => 553,
'scaleHeight' => 251,
'dstX' => 50,
'dstY' => 115,
'rotation' => 0
],
11 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
12 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
13 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
14 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
15 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
16 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 430,
'dstY' => 122,
'rotation' => 0
],
17 => [
'scaleWidth' => 370,
'scaleHeight' => 225,
'dstX' => 247,
'dstY' => 122,
'rotation' => 0
],
18 => [
'scaleWidth' => 528,
'scaleHeight' => 246,
'dstX' => 257,
'dstY' => 117,
'rotation' => 0
]
];
return $scaleData[$indx];
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... nd-imagick
PHP: слияние двух изображений как одно (GD и Imagick) ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение