#php #image #merge #grayscale
#php #изображение #слияние #оттенки серого
Вопрос:
Я хочу иметь возможность создавать изображение на основе изображения профиля с наложением на него другого изображения.
(Изображение, которое я хочу наложить)
Изображения профиля имеют разную ширину и высоту, и я хочу позволить 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);
}
Я хочу поставить над ним красную надпись «Запрещено».
Это то, что я хочу получить в результате:
(оригинал)
(отредактировано)
Не могли бы вы помочь мне с этим?
Комментарии:
1. Вы пробовали это php.net/manual/en/function.imagecopymerge.php
2. Это может быть немного проблемой XY . Не было бы намного проще и быстрее просто наложить его с помощью CSS? Если вы отображаете это на веб-странице
Ответ №1:
Да, это работает, но вы проверяете и корректируете координату в зависимости от ваших потребностей.
$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);
Ответ 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');
Комментарии:
1. Я не уверен, но я полагаю, что я сделал что-то не так. Это мой текущий результат: i.imgur.com/GYSx9xc.png Я обновил основной пост своим новым кодом
2. Проверьте отредактированный ответ, теперь я изменил, как ожидалось, и проверьте с другими изображениями