>red;
}
/**
* 设置颜色索引
*
* @param int $red
* @return int 返回设置的颜色索引
*/
function setBlue($blue){
$this->blue= abs(intval($blue));
if($this->blue >255 ){
$this->blue= 255;
}
return true;
}
/**
* 获取颜色索引
*
* @return int 颜色索引
*/
function getRed(){
return $this->red;
}
/**
* 获取颜色索引
*
* @return int 颜色索引
*/
function getGreen(){
return $this->green;
}
/**
* 获取颜色索引
*
* @return int 颜色索引
*/
function getBlue(){
return $this->blue;
}
/**
* debug
*
*/
function debug(){
$result= array();
$result['red']= $this->red;
$result['green']= $this->green;
$result['blue']= $this->blue;
print_r($result);
}
/**
* 转换灰度模式的 RGB
*
*/
function Gamma(){
$red= $this->red;
$green= $this->green;
$blue= $this->blue;
//灰度计算方法:
//sRGB IEC61966-2.1 [gamma=2.20](Adobe PS目前使用此方法)
//测试纯红色灰度:126
//Gray = (R^2.2 * 0.2126 + G^2.2 * 0.7152 + B^2.2 * 0.0722)^(1/2.2)
$gray_leval = pow((pow($red,2.2) * 0.2126 + pow($green,2.2) * 0.7152 + pow($blue,2.2) * 0.0722),(1/2.2));
//Adobe RGB (1998) [gamma=2.20]
//测试纯红色灰度:146
//Gray = (R^2.2 * 0.2973 + G^2.2 * 0.6274 + B^2.2 * 0.0753)^(1/2.2)
//$gray_leval = pow((pow($red,2.2) * 0.2973 + pow($green,2.2) * 0.6274 + pow($blue,2.2) * 0.0753),(1/2.2));
//Apple RGB [gamma=1.80]
//测试纯红色灰度:116
//Gray = (R^1.8 * 0.2446 + G^1.8 * 0.6720 + B^1.8 * 0.0833)^(1/1.8)
//$gray_leval = pow((pow($red,1.8) * 0.2446 + pow($green,1.8) * 0.6720 + pow($blue,1.8) * 0.0833),(1/1.8));
//ColorMatch RGB [gamma=1.8]
//测试纯红色灰度:124
//Gray = (R^1.8 * 0.2750 + G^1.8 * 0.6581 + B^1.8 * 0.0670)^(1/1.8)
//$gray_leval = pow((pow($red,1.8) * 0.2750 + pow($green,1.8) * 0.6581 + pow($blue,1.8) * 0.0670),(1/1.8));
//KODAK DC Series Digital Camera [gamma=2.2]
//测试纯红色灰度:128
//Gray = (R^2.2 * 0.2229 + G^2.2 * 0.7175 + B^2.2 * 0.0595)^(1/2.2)
//$gray_leval = pow((pow($
red,2.2) * 0.2229 + pow($green,2.2) * 0.7175 + pow($blue,2.2) * 0.0595),(1/2.2));
$this->setRed($gray_leval);
$this->setGreen($gray_leval);
$this->setBlue($gray_leval);
}
/**
* 颜色的模糊匹配
*
* @param mix $rgb
* @param int $leval
* @return boolean 匹配成功返回true,失败返回 false
*/
function fuzzyMatch($rgb, $leval=0){//模糊匹配
$cm_total= 0;
$leval_add= $leval*0.8;
if(is_object($rgb) &;&; get_class($rgb) == 'RGB'){
$red= abs($this->red- $rgb->red);
$green= abs($this->green- $rgb->green);
$blue= abs($this->blue- $rgb->blue);
if($red >$leval)
return false;
else{
$cm_total+= $red;
$cm_total+= $red>$leval_add?$red-$leval_add : 0;
}
if($green >$leval){
return false;
}else{
$cm_total+= $green;
$cm_total+= $green>$leval_add?$green-$leval_add : 0;
}
if($blue >$leval){
return false;
}else{
$cm_total+= $blue;
$cm_total+= $blue>$leval_add?$blue-$leval_add : 0;
}
if($cm_total >($leval *3)){
return false;
}
return true;
}
exit('RGB.fuzzyMatch request a rgb class');
}
}
//Image Class
class Image{
private $image= null; //图形资源句柄
private $width= 0; //图形宽度
private $height=