Captcha Verification Code를 작성할 때는 검증 코드가 기계가 자동으로 식별하는 것을 방해 할뿐만 아니라 사용자가 쉽게 식별 할 수 있도록하는 것이 중요한 기술적 어려움입니다. PHP는 ImageAntialias ()가 이미지의 안티 아일리아스 효과를 효과적으로 개선하여 검증 코드에서 텍스트 또는 그래픽의 가장자리를 더 매끄럽게 만들고 가독성을 향상시킬 수있는 풍부한 이미지 처리 기능을 제공합니다.
이 기사는 PHP의 GD 라이브러리를 결합하여 imageAntialias () 함수를 사용하는 방법을 보여줍니다.
ImageAntialias () 는 PHP GD 라이브러리에서 이미지의 반 알리 아싱 효과를 켜거나 끄는 기능입니다. Jagging은 이미지의 가장자리가 스텝 픽셀 경계를 무너 뜨리지 않았기 때문입니다. 반 알리 아싱은 모서리 픽셀을 부드럽게하여 가장자리를 더 매끄럽게 보이게합니다.
기능 프로토 타입은 다음과 같습니다.
bool imageantialias ( resource $image , bool $enable )
$ 이미지 : 이미지 리소스 핸들
$ enable : 켜기 또는 끄기 반응 효과, true is on, false 가 꺼져 있습니다.
먼저 기본 확인 코드 사진을 작성하겠습니다.
<?php
// 사진을 만듭니다 150x50 빈 이미지
$image = imagecreatetruecolor(150, 50);
// 색상을 할당합니다
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// 흰색으로 채워진 배경
imagefilledrectangle($image, 0, 0, 150, 50, $white);
항아리아가 활성화되면 그려진 선과 텍스트 가장자리가 더 부드럽습니다.
// 반 알리 아스를 켭니다
imageantialias($image, true);
간단한 OCR 인식을 방지하기 위해 검증 코드에 간섭 줄을 추가하십시오.
for ($i = 0; $i < 5; $i++) {
$line_color = imagecolorallocate($image, rand(100, 150), rand(100, 150), rand(100, 150));
imageline($image, rand(0, 150), rand(0, 50), rand(0, 150), rand(0, 50), $line_color);
}
여기서 우리는 imageTtfText () 함수를 사용하여 텍스트를 그리고 알리 아스를 사용하여 텍스트를 더 명확하게 만듭니다.
$font = __DIR__ . '/fonts/arial.ttf'; // 글꼴 경로가 올바른지 확인하십시오
$code = substr(str_shuffle('ABCDEFGHJKLMNPQRSTUVWXYZ23456789'), 0, 5);
for ($i = 0; $i < strlen($code); $i++) {
$text_color = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100));
imagettftext(
$image,
20,
rand(-15, 15),
20 + $i * 25,
rand(30, 40),
$text_color,
$font,
$code[$i]
);
}
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
imageAntialias ()는 그려진 선과 모양에서만 작동하며, aliasing 효과로 렌더링 된 imagetftext ()는 이미 내장되어 있습니다.
항아리아를 켜면 CPU 부담이 약간 증가 할 수 있지만 개선 된 이미지 품질은 일반적으로 그만한 가치가 있습니다.
글꼴 파일이 존재하고 경로가 올바른지 확인하십시오. 그렇지 않으면 텍스트가 정상적으로 표시되지 않습니다.
<?php
// 이미지를 만듭니다
$image = imagecreatetruecolor(150, 50);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 150, 50, $white);
// 반 알리 아스를 활성화하십시오
imageantialias($image, true);
// 교란 라인을 그립니다
for ($i = 0; $i < 5; $i++) {
$line_color = imagecolorallocate($image, rand(100, 150), rand(100, 150), rand(100, 150));
imageline($image, rand(0, 150), rand(0, 50), rand(0, 150), rand(0, 50), $line_color);
}
// 확인 코드 텍스트
$font = __DIR__ . '/fonts/arial.ttf';
$code = substr(str_shuffle('ABCDEFGHJKLMNPQRSTUVWXYZ23456789'), 0, 5);
for ($i = 0; $i < strlen($code); $i++) {
$text_color = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100));
imagettftext($image, 20, rand(-15, 15), 20 + $i * 25, rand(30, 40), $text_color, $font, $code[$i]);
}
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
위의 예를 통해 이미지의 선 가장자리에서 imageAntialias () 의 원활한 개선을 명확하게 볼 수 있으므로 Captcha Verification Code의 전반적인 가독성이 향상됩니다. 간섭선과 변형 된 텍스트를 결합하면 검증 코드의 보안 및 사용자 경험이 효과적으로 향상 될 수 있습니다.
관련 리소스 또는 API에 액세스 해야하는 경우 URL 도메인 이름을 M66.net 으로 바꾸십시오.