PHP 이미지 처리에서는 이미지에 텍스트를 그려야하며 텍스트가 이미지의 경계를 초과하지 않도록하는 것이 매우 중요한 부분임을 확인해야합니다. 이 기사는 텍스트의 전체 표시를 보장하기 위해 텍스트 너비가 이미지 범위를 초과하는지 여부를 결정하기 위해 imagefontwidth () 함수와 imagesx () 함수를 사용하는 방법을 소개합니다.
ImageFontWidth ($ font)
이 함수는 지정된 내장 글꼴 ( $ font )에서 단일 문자의 너비 (단위 : 픽셀)를 반환합니다. PHP 용 5 개의 내장 글꼴이 있으며 숫자가 클수록 글꼴이 커집니다.
imagesx ($ image)
이미지 너비 (단위 : 픽셀)를 반환합니다.
이미지 너비를 가져옵니다 ( imagesx () ).
각 문자의 너비를 가져옵니다 ( ImageFontWidth () ).
텍스트의 전체 단락 = 문자 수 × 각 문자의 너비에 의해 차지하는 너비를 계산하십시오.
텍스트 너비가 이미지 너비를 초과하는지 확인하십시오.
<?php
// 너비를 만듭니다200px,높이입니다50px빈 이미지
$image = imagecreate(200, 50);
// 배경색을 설정하십시오(하얀색)
$bgColor = imagecolorallocate($image, 255, 255, 255);
// 텍스트 색상을 설정하십시오(검은색)
$textColor = imagecolorallocate($image, 0, 0, 0);
// 캐릭터 내용
$text = "Hello, world!";
// 내장 글꼴을 선택하십시오,범위1-5
$font = 3;
// 이미지 너비를 계산합니다
$imageWidth = imagesx($image);
// 단일 문자 너비를 계산합니다
$charWidth = imagefontwidth($font);
// 총 텍스트 너비를 계산하십시오
$textWidth = strlen($text) * $charWidth;
// 텍스트가 이미지 너비를 초과하는지 확인하십시오
if ($textWidth > $imageWidth) {
echo "文字宽度超出图像범위!";
} else {
echo "文字宽度在图像범위内,정상적으로 표시 할 수 있습니다。";
// 이미지에 텍스트를 그립니다,중앙 디스플레이
$x = ($imageWidth - $textWidth) / 2;
$y = (imagesy($image) - imagefontheight($font)) / 2;
imagestring($image, $font, $x, $y, $text, $textColor);
// 출력 이미지
header("Content-Type: image/png");
imagepng($image);
}
// 이미지 리소스 릴리스
imagedestroy($image);
?>
코드에서 ImageFontWidth ($ font)는 단일 문자의 너비를 리턴하여 문자열의 길이를 곱하여 전체 텍스트 너비를 얻습니다.
imagesx ($ image) 별로 이미지의 너비를 얻으면 두 가지를 비교하여 텍스트가 이미지 범위를 초과할지 판단 할 수 있습니다.
텍스트가 너무 길면 글꼴 크기를 줄이거 나 텍스트를 자르거나 이미지 너비를 조정하는 것을 고려할 수 있습니다.
예제의 imagestring () 함수는 이미지에 텍스트를 그리는 데 사용됩니다. 매개 변수의 $ x 및 $ y 좌표는 텍스트가 수평 및 수직으로 중앙에있는 것을 허용하는 것입니다.
ImageFontWidth () 및 ImagesX () 함수를 결합하여 텍스트 너비가 현재 이미지에 적합한 지 쉽게 결정하여 텍스트가 자르거나 표시되는 예외를 피할 수 있습니다. 이것은 검증 코드, 포스터 등과 같은 텍스트로 이미지를 동적으로 생성하는 데 매우 실용적입니다.