Мне нужно добавить прозрачный водяной знак (прозрачность в конечном изображении - 80%). Я создал эту функцию, чтобы справиться с этим:Добавить прозрачный водяной знак в изображение
function ImageAddWatermark($im, $stamp, $onLeft, $onTop, $margin){
// $stamp = imagecreatformpng(...) -> GD resource?
// not important part - it calculates position of watermark
if($onLeft){
$orgX = $margin;
} else {
$orgX = imagesx($im)-$margin-imagesx($stamp);
}
if($onTop){
$orgY = $margin;
}else {
$orgY = imagesy($im)-$margin-imagesy($stamp);
}
imagecopymerge($im, $stamp, $orgX, $orgY, 0, 0, imagesx($stamp), imagesy($stamp), 50);
return $im;
}
Результат функции:
Но imagecopymerge возвращает черный фон вместо прозрачного. Я даже слышал некоторые мнения, что imagecopymerge не совсем подходит для создания прозрачных водяных знаков ...
Так что вопрос: «Как добавить прозрачный водяной знак (используя альфа?) В jpeg-фото?» Как я могу избавиться от этого черного backgound? (В исходном файле PNG прозрачен)
что такое '$ stamp', прежде чем вы вызовете эту функцию? это ресурс GD? как вы его загрузили? – cmorrissey
@cmorrissey, если ресурс GD «imagecreatefrompng (...)», и, конечно, я его называю – tomascapek
add 'imagealphablending ($ stamp, true);' после вызова 'imagecreatefrompng (...)' – cmorrissey