Ive가 이해하지 못하는이 스크립트에 문제가 있습니다.PHP 색 인식 스크립트가 잘못된 색을 반환합니다.
지금까지 모든 것이 정확하다는 것을 알 수 있습니다. 스크립트는 루프에서도 작동하며 예상대로 색상을 반환합니다.
문제는 그 이미지를 스캔하여 색상 배열을 반환, 단지 시험과 미리 설정된 녹색을 사용하는 기능을 제거했습니다
... 색상이되고 출력이 잘못이다. 스크립트는 녹색 값이 같더라도 빨강에 가깝다고 생각합니다! 그 블록에 대한 작은 색상 차이 밖으로
일 : (일반적으로 루프) 테스트로 녹색 사용
function getColor($rgb)
{
$colors = array(BLUE =>0x0a9ef3, RED => 0xea0a2f, GREEN => 0x336633);
$largestDiff = 0;
$closestColor = "";
foreach ($colors as $name => $rgbColor)
{
if (!isset($smallestDiff)) {
$smallestDiff = colorDiff($rgbColor,$rgb);
$closestColor = $name;
} else if (colorDiff($rgbColor,$rgb) < $smallestDiff)
{
$smallestDiff = colorDiff($rgbColor,$rgb);
$closestColor = $name;
}
}
return $closestColor;
}
function colorDiff($rgb1,$rgb2)
{
// do the math on each tuple
$red1 = hexdec(substr($rgb1,0,2));
$green1 = hexdec(substr($rgb1,2,2));
$blue1 = hexdec(substr($rgb1,4,2));
$red2 = hexdec(substr($rgb2,0,2));
$green2 = hexdec(substr($rgb2,2,2));
$blue2 = hexdec(substr($rgb2,4,2));
return abs($red1 - $red2) + abs($green1 - $green2) + abs($blue1 - $blue2) ;
}
실행 스크립트는
$color = '336633';
$closestmatch = getColor("0x".$color);
출력 RED입니다! 도움!
이 문제는 colorDIFF 함수에서 발생합니까?
의'필자 내가 understand.'이 * 한숨 * – SamV
실례 그나마이 스크립트에 문제가있어? 너의 마음을 말하라. – user2010470