У меня есть следующая проблема. У меня есть PNG файл (http://meteopage.com/beta/image.png), который уже частично прозрачен, и я хотел бы сделать "розовую" границу прозрачной. Я прочитал некоторые инструкции здесь и придумал код, который заменяет границу прозрачной точкой, но все остальное, которое было уже прозрачным, превращается в черный: http://meteopage.com/beta/radar2. PHP
Мой код выглядит так:
<?php
$file="image.png";
$im = imagecreatefrompng($file);
imagealphablending($im, false);
$new = imagecolorclosest($im, 255, 0, 255);
imagecolortransparent($im, $new);
imagesavealpha($im, true);
header('Content-type: image/png');
imagepng($im);
?>
Я попробовал добавить эти команды imagesavealpha и imagealphablending, но все равно не повезло, он черный, как вы можете видеть в ссылке Ive. Кто-нибудь знает, как сохранить первоначальную прозрачность и просто "добавить" эти розовые пиксели к ней?
Ваше изображение не основано на палитре, а не на истинном цвете, поэтому вызовы для imagealphablending()
и imagesavealpha()
не нужны.
Самый простой способ сделать это - заменить розовый цвет в палитре-индексе прозрачным, например:
$file = 'image.png';
$im = imagecreatefrompng($file);
$new = imagecolorclosest($im, 255, 0, 255);
imagecolorset($im, $new, 255, 0, 255, 127);
header('Content-type: image/png');
imagepng($im);
Обратите внимание, что для этого требуется PHP> = 5.4, иначе imagecolorset()
не примет alpha
параметр.