truecolor и прозрачность

Nicholas

Новичок
truecolor и прозрачность

приветствую всех.
появилась такая проблема:
необходимо уменьшить изображение, и сделать у него позрачные уголки.
из инструментов только php+gd2

уменьшение - тривиальная задача.
теперь про уголки.

мои действия:
- берем картинку-маску, полностью прозрачную, с непрозрачными уголками цвета 0xff00ff
- накладываю на изображение
- далее делаем точки определенного цвета полностью прозрачными:
PHP:
$transparent = imagecolorallocate($avatar, 255, 0, 255);
imagecolortransparent($avatar, $transparent);
вот тут и начинается лажа.

изображение внезапно становится 256-цветным.

попробовал вставить перед сохранением изображения:
PHP:
imagesavealpha($avatar, true);
изображение стало truecolor, но прозрачная часть исчезла.

Погуглил, нашел инфу, что gd2 с альфаканалом вообще не умеет работать,
а тупо делает выбранный цвет прозрачным, соответственно конвертируя изображения в 256-цветные.

Прошу помощи в вопросе.
Может кто-нибудь сталкивался, как в gd2 сделать truecolor картинку, с прозрачностью?
 

Nicholas

Новичок
да создаю нормально.
Упрошенно, код выглядит так:

PHP:
$img = imagecreatefromstring(file_get_contents($file));
...
$avatar = imagecreatetruecolor($width, $height);
imagecopyresampled($avatar, $img, 0, 0, $x, $y, $width, $height, $width, $height));
...
$mask   = imagecreatefrompng('mask.png');
...
imagecopy($avatar, $mask, 0, 0, 0, 0, $width, $height);
...
$transparent = imagecolorallocate($avatar, 255, 0, 255);
imagecolortransparent($avatar, $transparent);
...
imagesavealpha($avatar, true);
imagepng($avatar, "name.png");
 
Сверху