Как я могу объединить 3 изображения в 1 изображение через PHP?

Я действительно не могу найти способ успешно это сделать .. Я искал Google для этого, и он либо имеет черные оттенки вокруг изображений, либо все изображения не перекрываются. Не могли бы вы помочь?

Я в порядке на PHP; Я бы отдал себе 2/5. Я бы очень признателен, если кто-то захочет помочь мне.

Я ищу простой api, который выглядит примерно так:

$color=$_GET['color']; $face=$_GET['face']; $hat=$_GET['hat']; echo '<img src="avatar.php?color=$color&face=$face&hat=$hat">'; 

Спасибо за любую помощь заранее. Я могу понять php из моего знания других языков, так что не бойтесь говорить со мной технически; но не слишком техничным.

Solutions Collecting From Web of "Как я могу объединить 3 изображения в 1 изображение через PHP?"

есть так много комментариев на этот ответ, поэтому я отправляю это как ответ.

Получил это, работая на моем компьютере.

используйте код svens:

  $images = array( $_GET['color'], $_GET['face'], $_GET['hat'] ); // Allocate new image $img = imagecreatetruecolor(58, 75); // Make alpha channels work imagealphablending($img, true); imagesavealpha($img, true); foreach($images as $fn) { // Load image $cur = imagecreatefrompng($fn); imagealphablending($cur, true); imagesavealpha($cur, true); // Copy over image imagecopy($img, $cur, 0, 0, 0, 0, 58, 75); // Free memory imagedestroy($cur); } header('Content-Type: image/png'); // Comment out this line to see PHP errors imagepng($img); ?> 

Я переименовал ваши изображения так, чтобы это было проще:

smile: a.png
гарнитура: b.png
синий: c.png

Оказывается, проблема заключается в ее разбиении. Помещение одного за другим

после того, как вы переименуете изображения, используйте этот url – он будет работать (работает на моем компьютере).

YOUR_FILE.php? Шляпа = b.png & цвет = c.png и лицо = a.png

Это все равно даст вам черный фон. Я не уверен, что у вас есть тот же самый код, что и выше, в вашем файле на сервере – потому что я играл с порядком изображения по вашей ссылке, и это не помогает. Попробуйте скопировать этот точный код в другой файл, а затем попробовать. Поиграйте с заказом и проверьте результаты.

Вот вам какой-то код, чтобы вы начали. Однако следует отметить, что обработка изображений с помощью gd и альфа-каналов – это voodoo.

 <?php $images = array( $_GET['color'], $_GET['face'], $_GET['hat'] ); // Allocate new image $img = imagecreatetruecolor(58, 75); // Make alpha channels work imagealphablending($img, true); imagesavealpha($img, true); foreach($images as $fn) { // Load image $cur = imagecreatefrompng($fn); imagealphablending($cur, true); imagesavealpha($cur, true); // Copy over image imagecopy($img, $cur, 0, 0, 0, 0, 58, 75); // Free memory imagedestroy($cur); } header('Content-Type: image/png'); // Comment out this line to see PHP errors imagepng($img); ?> 

Теперь вам нужно проверить возвращаемые значения (посмотреть в функциях image* в руководстве), чтобы убедиться, что он не сработает молча.

Я не могу пообещать, что он будет работать с альфа-каналами. Если нет, вам, вероятно, придется просмотреть комментарии к imagecopymerge() или imagecopy() на php.net и посмотреть, не пропустил ли я что-то.