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

0

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

Теги:
image
transparency

1 ответ

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 параметр.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню