PHP를 사용하여 텍스트로 사진을 생성 할 때 텍스트가 그림의 경계를 초과하지 않도록해야하므로 전체적인 미학 및 가독성에 영향을 미칩니다. PHP는 이미지와 텍스트를 처리하기위한 다양한 기능을 제공합니다. ImageFontWidth ()는 지정된 글꼴 크기로 단일 문자의 너비를 얻는 데 도움이되는 매우 실용적인 기능으로 전체 텍스트의 너비를 계산합니다.
이 기사는 ImageFontWidth ()를 사용하여 텍스트 너비를 결정하고 텍스트가 그림에 텍스트를 그릴 때 경계를 초과하는 것을 방지하는 방법을 자세히 소개합니다.
ImageFontWidth () 함수의 함수는 내장 글꼴 문자의 너비를 픽셀로 반환하는 것입니다. 기능 정의는 다음과 같습니다.
int imagefontwidth(int $font);
매개 변수 $ font 는 글꼴 크기이고 값 범위는 일반적으로 1 ~ 5이며 PHP의 5 개의 내장 글꼴 크기를 나타냅니다.
이 기능을 통해 각 문자의 너비를 얻은 다음 문자열의 길이를 결합하여 전체 텍스트의 너비를 계산할 수 있습니다.
다음 코드는 문자열 너비를 계산하는 방법을 보여주고 지정된 이미지 너비를 초과하는지 여부를 결정합니다.
<?php
// 이미지 너비를 설정하십시오
$image_width = 200;
// 글꼴 크기를 선택하십시오,1 도착하다 5
$font = 3;
// 그릴 문자열
$text = "이것은 테스트 텍스트입니다";
// 단일 문자의 너비를 계산하십시오
$char_width = imagefontwidth($font);
// 문자열 너비를 계산하십시오
$text_width = strlen($text) * $char_width;
// 텍스트가 경계를 초과하는지 확인하십시오
if ($text_width > $image_width) {
echo "텍스트 너비는 이미지 너비를 초과합니다,경계를 넘어서는 것일 수 있습니다";
} else {
echo "텍스트 너비는 그림 범위 내에 있습니다,그릴 수 있습니다";
}
?>
참고 : 위 코드에서 strlen ()은 바이트 길이를 계산합니다. 텍스트가 중국인 인 경우 MB_Strlen ()을 사용하여 중국어가 잘못 계산되지 않도록 문자 길이를 계산하는 것이 좋습니다.
$text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;
그림에 텍스트를 작성하려면 먼저 텍스트 너비를 측정 한 다음 글꼴을 줄이거나 텍스트를 잘라 내거나 줄을 끊어야하는지 결정할 수 있습니다. 다음 예제는 이미지 너비를 기준으로 텍스트를 자동으로 자르는 방법을 보여줍니다.
<?php
// 빈 이미지를 만듭니다
$image_width = 200;
$image_height = 50;
$image = imagecreatetruecolor($image_width, $image_height);
// 배경색을 설정하십시오
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 글꼴 색상을 설정하십시오
$text_color = imagecolorallocate($image, 0, 0, 0);
// 캐릭터 내용
$text = "이것은 테스트 텍스트입니다,길어질 수 있습니다";
// 글꼴 크기를 선택하십시오
$font = 3;
$char_width = imagefontwidth($font);
// 최대 몇 개의 문자 수를 계산하십시오
$max_chars = floor($image_width / $char_width);
// 텍스트를 잘라냅니다,이미지 너비가 초과되지 않도록합니다
if (mb_strlen($text, 'UTF-8') > $max_chars) {
$text = mb_substr($text, 0, $max_chars, 'UTF-8') . '...';
}
// 텍스트 너비를 계산합니다,중앙 디스플레이
$text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;
$x = ($image_width - $text_width) / 2;
$y = ($image_height - imagefontheight($font)) / 2;
// 텍스트를 그립니다
imagestring($image, $font, $x, $y, $text, $text_color);
// 출력 사진
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
ImageFontWidth ($ font)를 사용하여 단일 문자의 너비를 얻으십시오.
mb_strlen () 을 결합하여 문자열의 문자 수를 계산하여 텍스트의 총 폭을 얻습니다.
텍스트 너비를 그림 너비와 비교하여 초과할지 여부를 결정하십시오.
텍스트가 그림 범위 내에 있는지 확인하기 위해 텍스트를 잘라 내거나 글꼴 크기를 조정하십시오.
이 방법은 PHP 내장 글꼴을 사용하여 텍스트를 그린 장면에 적합합니다.
TTF 글꼴을 사용하여 텍스트를 그려야하는 경우 텍스트 크기를보다 정확하게 측정하기 위해 imagetfbbox ()를 사용하는 것이 좋습니다.