Lobochkin
@Lobochkin
Начинающий программист PHP

Почему становится прозрачным только фон?

Всем доброго дня, пытаюсь наложить водяной знак определенной прозрачности, но прозрачность меняется только у фона, не могу понять почему
$new = 'new.jpg';
$image = 'image.jpg';
$stamp = imagecreatefrompng('watermark.png'); //Логотип, размер произвольный
$sx = imagesx($stamp); //Получаем ширину
$sy = imagesy($stamp); //Высоту
   
for( $x = 0; $x < $sx; $x++ ){ 
	for( $y = 0; $y < $sy; $y++ ){ 
		$colorxy = imagecolorat( $stamp, $x, $y ); 

		$alphacolorxy = imagecolorallocatealpha( $stamp,
	    	( $colorxy >> 16 ) & 0xFF,
	    	( $colorxy >> 8 ) & 0xFF,
	    	  $colorxy & 0xFF, 70
		); 
		if( !imagesetpixel( $stamp, $x, $y, $alphacolorxy ) ){ 
			echo "string";
			return false; 
		} 
	} 
} 
$im = imagecreatefromjpeg($image); //Исходная картинка
imagecopy($im, $stamp, imagesx($im) - $sx - 30,  imagesy($im) - $sy - 30, 0, 0, imagesx($stamp), imagesy($stamp)); //Копируем логотип на картинку
var_dump($im);
imagejpeg($im, 'new_' . $image, 100); //Создаем изображение
imagedestroy($im); //Чистим за собой
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 2
@SellerMan
Нет возможности проверить, но что если в imagecreatefrompng() передать картинку уже с нужной прозрачностью, т.е. обработать программно до imagecreatefrompng($img_alfa)?
Ответ написан
Lobochkin
@Lobochkin Автор вопроса
Начинающий программист PHP
Помогло добавить строчку
imagealphablending($stamp, false);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы