검은 색 또는 흰색을 사용자가 선택한 다른 색상으로 대체하는이 스크립트가 있지만 특정 색상 (보라색 배경 녹색 글씨)에서는 글자 주위에 흰색 픽셀 테두리가 남습니까? 어떻게해야할지 모르겠어요? 여기에서 확인하세요 -http : //marijasorganicpantry.com.au/imagephp.php
<?php
ob_start();
$txtcolor=$_REQUEST['text1'];
$r1txt=hexdec(substr($txtcolor,0,2));
$g1txt=hexdec(substr($txtcolor,2,2));
$b1txt=hexdec(substr($txtcolor,4,2));
$backcolor=$_REQUEST['back1'];
$r1back=hexdec(substr($backcolor,0,2));
$g1back=hexdec(substr($backcolor,2,2));
$b1back=hexdec(substr($backcolor,4,2));
$imgname="demo_the-crown-prints_work-hard_5x7.jpg";
$im = imagecreatefromjpeg($imgname);
$w = imagesx($im);
$h = imagesy($im);
$gd = imagecreatetruecolor($w,$h);
imagecopyresampled($gd, $im, 0, 0, 0, 0, $w, $h, $w, $h);
imagefilter($gd, IMG_FILTER_COLORIZE,$r1txt,$g1txt,$b1txt);
for($x=0;$x<$w;$x++)
{
for($y=0;$y<$h;$y++)
{
$rgb = imagecolorat($gd, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if ($r==255 and $g==255 and $b==255)
{
$pixelColor=imagecolorallocatealpha($gd,$r1back,$g1back,$b1back,10);
imagesetpixel($gd,$x,$y,$pixelColor);
}
}
}
imagejpeg($gd,NULL,100);
$outputBuffer = ob_get_clean();
$base64 = base64_encode($outputBuffer);
echo '<a id="downloadimage" style="text-decoration:none;" download>
<img id="image2" width=150 height=250 src="data:image/jpeg;base64,'.$base64.'" />
<li style="padding-top:7px;textalign:center;display:block;border-radius:10px;background-color:royaleblue;height:30px;width:100px;">download</li></a>';
?>
원본 이미지에서 글자에는 완벽한 검은 색이 아니라는 테두리가있어 색상이
R = 0
G = 0
B = 0
불필요한 단계를 피하기 위해 원본 코드를 약간 변경했습니다. 이것이 당신에게 필요한 것입니까?
<?php
ob_start();
$txtcolor="20FF00";
$r1txt=hexdec(substr($txtcolor,0,2));
$g1txt=hexdec(substr($txtcolor,2,2));
$b1txt=hexdec(substr($txtcolor,4,2));
$backcolor="FF0ED9";
$r1back=hexdec(substr($backcolor,0,2));
$g1back=hexdec(substr($backcolor,2,2));
$b1back=hexdec(substr($backcolor,4,2));
$imgname="demo_the-crown-prints_work-hard_5x7.jpg";
$gd = imagecreatefromjpeg($imgname);
$w = imagesx($gd);
$h = imagesy($gd);
for($x=0;$x<$w;$x++)
{
for($y=0;$y<$h;$y++)
{
$rgb = imagecolorat($gd, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if ($r>200 && $g>200 && $b>200)
{
$pixelColor=imagecolorallocate($gd,$r1back,$g1back,$b1back);
imagesetpixel($gd,$x,$y,$pixelColor);
} else {
$pixelColor=imagecolorallocate($gd,$r1txt,$g1txt,$b1txt);
imagesetpixel($gd,$x,$y,$pixelColor);
}
}
}
imagejpeg($gd,'simpletext.jpg', 100);
imagepng($gd,'simpletext.png', 0);
?>
imagejpeg와 imagepng의 품질 차이를 확인할 수 있도록 결과를 파일에 저장했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다