Прозрачность PNG

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

0

Решение

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]