본문
작성:freeimage.kr 김성대
<?
$color1="#A3a3bb";
$color2="#aa0000";
$color3="#". mix_color($color1,$color2);
echo "<table width=100%><tr>";
echo "<td bgcolor=$color1 height=50></td>";
echo "<td bgcolor=$color2></td>";
echo "<td bgcolor=$color3></td>";
echo "</tr></table>";
//RGB 칼라 색상 혼합 두가지 색상을 섞어서 새색상으로 리턴
function mix_color($color1,$color2) {
$color1=str_replace("#","",$color1);
$color2=str_replace("#","",$color2);
$out="";
for ($i=0;$i<3;$i++) {
$c1=substr($color1,$i*2,2);
$c2=substr($color2,$i*2,2);
$a=hexdec($c1);
$b=hexdec($c2);
$ret=($a+$b) - ($a*$b/255);
/* 다른 공식
if (($a<=127&&$b<=127) || ($a>=127&&$b<=127) ) $ret=($a+$b) - ($a*$b/255);
else $ret=255 - ((255-$a)*(255-b)*2)/255;
*/
if ($ret<0) $ret=0;
if ($ret>255) $ret=255;
$r=sprintf("%02X",intval($ret));
$out.=$r;
//echo "$color1 + $color2 : $c1 ($a) + $c2 ($b) = $r ($ret) <BR>";
}
return $out;
}
?>
색을 섞는 오버레이는 공식이 2개 적용됩니다.
포토샵레이어 팔레트에서 위에 있는 레이어의 R값을 a, 밑에 있는 레이어의 R값을 b라 하면
① a*b*2/255
② 255 - [{(255-a) * (255-b) * 2} /255]
입니다. (G, B 도 같은 방법으로 구하면 됩니다)
1번 공식은 a와 b가 127 (명도값 50) 보다 같거나 작을때와
a가 127보다 같거나 크고 b가 127보다 같거나 작을 때 적용됩니다.
즉 'a,b ≤ 127' 이거나 'a≥127, b≤127' 일때 입니다.
2번 공식은 a와 b가 127 보다 클 때와
a가 127보다 작고 b가 127보다 클때 적용됩니다.
즉 'a,b >127' 이거나 'a<127, b >127' 일때 입니다.
$color1="#A3a3bb"; | $color2="#aa0000"; | $color3="#". mix_color($color1,$color2); |
댓글목록
등록된 댓글이 없습니다.