이미지 처리에 PHP를 사용하는 경우 동적으로 생성 텍스트는 검증 코드 생성, 사용자 아바타, 차트 태그 등과 같은 시나리오와 같은 일반적인 요구 중 하나입니다. imageftbbox 기능은이 작업을 완료하는 데 중요한 도구입니다. 이 기사는이 기능의 사용법을 깊이 분석하고 이미지에서 텍스트 레이아웃을 정확하게 제어하는 데 도움이되는 실용적인 팁을 제공합니다.
ImageFtBbox 는 PHP의 GD 라이브러리에서 TTF (Truetype Fonts)를 사용하여 지정된 텍스트를 렌더링 할 때 경계 상자를 계산하는 기능입니다. 반환 값은 텍스트의 경계를 포함하는 4 개의 코너의 좌표를 나타내는 배열입니다.
array imageftbbox ( float $size , float $angle , string $fontfile , string $text [, array $options ] )
$ 크기 : 글꼴 크기.
$ 각도 : 텍스트 각도 (시계 방향).
$ fontfile : 글꼴 파일 경로.
$ 텍스트 : 측정 할 텍스트 문자열.
$ 옵션 : 단어 간격 및와 같은 선택적 매개 변수 등
imageftbbox는 다음과 같이 순서대로 경계 박스의 4 개의 모서리의 (x, y) 좌표를 나타내는 8 개의 요소를 포함하는 배열을 반환합니다.
[
0 => lower left x,
1 => lower left y,
2 => lower right x,
3 => lower right y,
4 => upper right x,
5 => upper right y,
6 => upper left x,
7 => upper left y
]
텍스트의 "실제"너비와 높이를 계산하려면 다음 공식을 사용하십시오.
$width = abs($bbox[2] - $bbox[0]);
$height = abs($bbox[5] - $bbox[1]);
다음은 텍스트의 너비와 높이를 계산하고 이미지에 중앙에있는 방법을 보여주는 완전한 PHP 예입니다.
<?php
// 글꼴 경로(TTF체재)
$font = __DIR__ . '/fonts/arial.ttf';
// 텍스트 내용
$text = "Hello Gitbox!";
// 글꼴 크기와 각도
$size = 20;
$angle = 0;
// 경계 상자를 계산하십시오
$bbox = imageftbbox($size, $angle, $font, $text);
// 너비와 높이를 계산하십시오
$width = abs($bbox[2] - $bbox[0]);
$height = abs($bbox[5] - $bbox[1]);
// 이미지를 만듭니다
$imageWidth = $width + 20;
$imageHeight = $height + 20;
$image = imagecreatetruecolor($imageWidth, $imageHeight);
// 색상 설정
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
// 시작점 좌표를 계산하고 그립니다,텍스트를 중심으로하십시오
$x = ($imageWidth - $width) / 2 - $bbox[0];
$y = ($imageHeight - $height) / 2 - $bbox[5];
// 텍스트를 그립니다
imagefttext($image, $size, $angle, $x, $y, $black, $font, $text);
// 출력 이미지
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
위의 코드를 .php 파일로 저장하고 예를 들어 https://gitbox.net/demo/text-center.php 에 배포 된 브라우저를 통해 액세스 할 수 있으며 텍스트가 이미지에 정확하게 중앙에 있음을 알 수 있습니다.
항상 ABS ()를 사용하십시오 : Bbox에서 반환 한 좌표는 음수 일 수 있으므로 ABS ()를 사용하여 너비와 높이를 계산해야합니다.
충분한 여백을 남겨 두십시오 : 글꼴이 자르지 않도록하려면 이미지 크기에 여분의 여백을 추가하는 것이 좋습니다 (위의 예에서는 +20).
참고 글꼴 호환성 : 특히 다른 운영 체제 또는 컨테이너 환경에서 배포 될 때 서버의 글꼴 경로가 올바른지 확인하십시오.
멀티 라인 텍스트 처리 : 각 라인은 ImageFTBBox를 사용하여 별도로 계산 한 다음 병합 및 배열됩니다.
ImageFtbbox 는 강력하지만 종종 간과되는 도구입니다. 마스터 링하면 이미지 타이포그래피의 자유와 정확성을 크게 향상시킬 수 있습니다. 위의 내용을 통해 텍스트의 너비와 높이를 정확하게 계산하여 실제 프로젝트에 유연하게 적용 할 수 있다고 생각합니다. 이미지에 적응 형 워터 마크, 레이블 또는 데이터 주석을 추가하려면 텍스트와 이미지를 진정으로 혼합하기 위해 더 많은 연습을 할 수 있습니다.
ImageFTBBox 에 대한 심층적 인 이해로 이미지 처리 기능이 새로운 수준으로 올라갑니다.