Добавление одного изображения внизу другого в PHP

Я хотел бы добавить одно изображение внизу другого в php

У меня есть это для загрузки изображений:

//load top
$top = @imagecreatefrompng($templateTop);
//load bottom
$bottom = @imagecreatefrompng($templateBottom);

Теперь я хотел бы добавить их к одному изображению и отобразить верх и низ вместе.

Каким образом я могу это сделать?

Спасибо!


person baklap    schedule 27.11.2010    source источник


Ответы (3)


Используйте копию изображения:

$top_file = 'image1.png';
$bottom_file = 'image2.png';

$top = imagecreatefrompng($top_file);
$bottom = imagecreatefrompng($bottom_file);

// get current width/height
list($top_width, $top_height) = getimagesize($top_file);
list($bottom_width, $bottom_height) = getimagesize($bottom_file);

// compute new width/height
$new_width = ($top_width > $bottom_width) ? $top_width : $bottom_width;
$new_height = $top_height + $bottom_height;

// create new image and merge
$new = imagecreate($new_width, $new_height);
imagecopy($new, $top, 0, 0, 0, 0, $top_width, $top_height);
imagecopy($new, $bottom, 0, $top_height+1, 0, 0, $bottom_width, $bottom_height);

// save to file
imagepng($new, 'merged_image.png');
person netcoder    schedule 27.11.2010
comment
Но если я хочу объединить изображения с альфой? Теперь второе изображение с такими же размерами перекрывает первое изображение. - person Aleksandrs; 22.03.2018

Для этого вам нужно: а) объединить изображение и сохранить результат в файле; б) сгенерировать подходящий тег, указывающий на него. c) Избегайте повторного использования этого имени файла, пока этот человек не уйдет.

Если вы хотите объединить два изображения только один раз, используйте магию изображений.

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

Например. Поместите изображения в

<div><div><img.../></div><div><img .../></div></div> 

который вы генерируете с помощью php обычным способом. (Что проще, чем заставить теги появляться здесь :)

person Ian    schedule 27.11.2010
comment
Это совсем не похоже на то, о чем он просил... не зная его варианта использования, это, вероятно, не является жизнеспособным решением. Я предполагаю, что он хочет сделать это для спрайтов CSS. - person mpen; 28.11.2010

person    schedule
comment
Возможно, это не ответ на этот вопрос, но это не заслуживает отрицательного голоса, потому что это ответ, ЕСЛИ вы хотите, чтобы оба изображения были наложены друг на друга. - person Wanjia; 06.01.2018