Как объединить два PNG (один с прозрачностью)? - PullRequest
3 голосов
/ 22 марта 2019

Я хочу иметь возможность создать изображение из изображения профиля с наложенным на него другим изображением.

The Banned Image I want to use

(Изображение, которое я хочу наложить)

Изображения профиля имеют разную ширину и высоту, и я хочу, чтобы PHP-скрипт "растягивал" banned.png поверх изображения профиля, в зависимости от размера изображения профиля.

Это сценарий, который я сейчас использую для создания нового изображения, чтобы сделать изображение профиля в оттенках серого:

function ImageToGreyscale($imagepath, $username){
$image_1_file = $imagepath.$username.'.png';    
$image_2_file = $imagepath.'/scripting/banned.png';
$image_1_size = getimagesize($image_1_file);
$image_1_w = $image_1_size[0];
$image_1_h = $image_1_size[1];
$image_1 = imagecreatefrompng($image_1_file);
$image_2 = imagecreatefrompng($image_2_file);
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagefilter($image_1, IMG_FILTER_GRAYSCALE);
imagecopy($image_1, $image_2, 0, 0, 0, 0, $image_1_w, $image_1_h);
imagepng($image_1, $imagepath.$username.'_banned.png');
imagedestroy($image_1);

}

Я хочу поставить поверх него красный «Banned».

Вот что я хочу получить в результате:

The original Image

(оригинал)

The edited Image

(отредактировано))

Не могли бы вы помочь мне с этим?

1 Ответ

1 голос
/ 22 марта 2019

Да, это работает, но вы проверяете и корректируете координаты в соответствии с вашими потребностями.

$image_1 = imagecreatefrompng('girl.png');
$image_2 = imagecreatefrompng('banned.png');
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagecopy($image_1, $image_2, 100, 100, 100, 100, 100, 100);
imagepng($image_1, 'image_3.png');
imagedestroy($image_1);

OUT 1 enter image description here

Ответ 2 Как и ожидалось, можно попробовать с другими изображениями

$image_1_file = 'girl.png';    
$image_2_file = 'banned.png';
$image_1_size = getimagesize($image_1_file);
$image_2_size = getimagesize($image_2_file);
$image_1_w = $image_1_size[0];
$image_1_h = $image_1_size[1];
$image_1 = imagecreatefrompng($image_1_file);
$image_2 = imagecreatefrompng($image_2_file);
imagealphablending($image_1, true);
imagesavealpha($image_1, true);
imagefilter($image_1, IMG_FILTER_GRAYSCALE);
imagecopyresampled($image_1, $image_2, 0, 0, 0, 0, $image_1_w, $image_1_h, $image_2_size[0], $image_2_size[1]);
imagepng($image_1,'girl_banned.png');

OUT 2 enter image description here

...