2014-11-19 2 views
0

У меня есть следующая проблема. У меня есть PNG-файл (http://meteopage.com/beta/image.png), который уже частично прозрачен, и я хотел бы сделать «розовую» границу прозрачной. Я прочитал некоторые инструкции здесь и придумал код, который заменяет границу прозрачной точкой, но все остальное, которое было уже прозрачным, превращается в черный: http://meteopage.com/beta/radar2.phpПроблемы с прозрачностью PNG

Мой код выглядит так:

<?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 прилагается. Кто-нибудь знает, как сохранить первоначальную прозрачность и просто «добавить» эти розовые пиксели к ней?

ответ

2

Ваше изображение на основе палитры, не соответствует истинному цвету, поэтому вызовы 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.

Смежные вопросы