Некоторое время назад я написал функцию для этого.
function alpha($image,$r=0,$g=0,$b=0){
$width=imagesx($image);
$height=imagesy($image);
$aw=0;
$ah=0;
for(;;){
if ($aw==$width) {$aw=0; $ah++;}
if ($ah==$height) break;
$rgb = imagecolorat($image, $aw, $ah);
$colors = imagecolorsforindex($image, $rgb);
$ar = $colors['red'];
$ag = $colors['green'];
$ab = $colors['blue'];
$ar+=$r;
$ag+=$g;
$ab+=$b;
if ($ar>255) $ar=255;
if ($ag>255) $ag=255;
if ($ab>255) $ab=255;
if ($ar<0) $ar=0;
if ($ag<0) $ag=0;
if ($ab<0) $ab=0;
$newcolor = imagecolorallocate($image, $ar, $ag, $ab);
$black = imagecolorallocate($image, 0, 55, 0);
imagesetpixel ($image , $aw , $ah , $newcolor );
$aw++;
}//end loop
return $image;}
Вы можете отрегулировать RGB всего изображения с помощью положительных или отрицательных целых чисел, например
, чтобы удалить красные цвета
alpha($image,-225,0,0);
Обратите внимание, что имя функции: alpha фактически не имеет никакого отношения к альфа-каналу.Это может сделать изображение таким, как будто оно имеет эффект альфа-канала.