2011-04-20 109 views
0

這是殺了我..GD顏色替換

圖像有一個純紅色的背景,一個純灰色的前景。在前景的邊緣有一些從灰色到白色的反鋸齒。

我需要做的是將前景色更改爲用戶指定的顏色,將紅色更改爲透明。這很容易使用imagecolorcloset + imagecolorset/imagecolortransparent。問題是反拉拉部分。

我相信我需要遍歷圖像中的像素。這似乎工作:http://www.php.net/manual/en/book.image.php#98153

我相信我現在需要確定前景色和反鋸齒色之間的色差。

所以......

前景色= RGB(153,153,153)

抗鋸齒像素= RGB(173,173,173)

新的顏色爲RGB(0 ,0,255)

如何確定AA像素和前景色之間的顏色差異,然後將其應用於新顏色?

回答

0

編輯:原來它與因素

抗混疊值應該是相同的因素使

<? 

    //old foreground colour 
    $of = array (220, 220, 220); 
    //old anti alias colour 
    $oaa = array (110, 110, 110); 

    //factors 
    $factors = array ($of[0]/$oaa[0], $of[1]/$oaa[1], $of[2]/$oaa[2]); 

    //new foreground 
    $nf = array (156, 34, 34); 
    //new anti alias 
    $naa = array($nf[0]/$factors[0], $nf[1]/$factors[1], $nf[2]/$factors[2]); 

?> 
+0

這是我最初的想法,但我認爲這是不正確的事情。如果新的前景顏色爲0,0,255,那麼最終會得到20,20,255,這將是完全不同的顏色。 – 2011-04-20 13:11:23

+0

嘗試新的答案,玩弄似乎是正確的Photoshop – Dormouse 2011-04-20 13:21:39