현재 위치: > 최신 기사 목록> 사용자 정의 게시판 이미지 생성기의 글꼴 너비 처리

사용자 정의 게시판 이미지 생성기의 글꼴 너비 처리

M66 2025-06-02

PHP를 사용하여 사용자 정의 게시판 이미지 생성기를 구축 할 때 이미지에서 텍스트 위치를 정확하게 계산하는 것이 중요한 작업입니다. 특히 Imagestring () 함수를 사용하여 내장 글꼴을 렌더링 할 때 ImageFontWidth ()는 우리에게 없어서는 안될 도구가됩니다.

글꼴 너비를 계산하는 이유는 무엇입니까?

사용자가 메시지 내용을 사용자 정의하고 다운로드 또는 공유를 위해 이미지로 렌더링 할 수 있다고 가정합니다. 글꼴의 너비가 올바르게 계산되지 않으면 텍스트가 이미지 경계를 초과하거나 시각적으로 중심적으로 나타날 수 있으므로 전체 미학에 영향을 미칩니다. 따라서 글꼴의 실제 너비에 따라 텍스트 위치를 동적으로 조정해야합니다.

ImageFontWidth () 의 역할

ImageFontWidth () 함수는 글꼴 상수 (예 : 1 ~ 5 )를 허용하고 글꼴의 각 문자의 픽셀 너비를 반환합니다. 예를 들어:

 $font = 4;
$char_width = imagefontwidth($font); // 그 반환을 가정합니다 8

이것은 각 캐릭터가 내장 글꼴 4를 사용하면 너비가 8 픽셀임을 의미합니다.

응용 프로그램 예 : 중앙 텍스트 렌더링

400 픽셀의 이미지를 생성하고 사용자의 텍스트 입력이 수평으로 중앙에있는 것을 원한다고 가정 해 봅시다. 우리는 이것을 할 수 있습니다 :

 <?php
// 사용자 입력 텍스트
$text = "게시판에 오신 것을 환영합니다!";

// 내장 글꼴 사용
$font = 5;
$font_width = imagefontwidth($font);

// 텍스트 너비를 계산합니다
$text_width = $font_width * strlen($text);

// 이미지를 만듭니다
$img_width = 400;
$img_height = 100;
$image = imagecreate($img_width, $img_height);

// 배경과 글꼴 색상을 설정합니다
$bg_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);

// 센터링 시작점을 계산합니다
$x = ($img_width - $text_width) / 2;
$y = 40;

// 텍스트 렌더링
imagestring($image, $font, $x, $y, $text, $text_color);

// 출력 이미지
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>

이 코드는 글꼴 폭에 따라 수평 축 $ X를 정확하게 계산하여 텍스트가 수평으로 표시되도록합니다.

실제 응용 분야에서 주목해야 할 사항

  1. Monowidth Fonts : ImageFontWidth () 는 MonowIdth 인 내장 글꼴에만 적합합니다. TTF 글꼴을 사용하고 imageTtfText ()를 호출하는 경우 imageTtfbbox () 함수를 사용하여 너비를 계산해야합니다.

  2. 문자 인코딩 문제 : ImageFontWidth () 는 단일 바이트 문자를 기반으로 설계되었으므로 중국어 또는 UTF-8 문자열에는 적용되지 않습니다. 이 경우 TTF 글꼴을 사용하여 적절한 문자 세트로 변환하거나 렌더링해야합니다.

  3. 자동 라인 랩 : 사용자가 입력 한 텍스트가 너무 길면 $ text_width가 이미지 너비를 초과하는지 여부를 결정해야합니다. 텍스트를 초과하면 텍스트를 수동으로 자르거나 글꼴 크기를 조정해야합니다. 자동 라인 랩핑 로직은 WordWrap () 및 문자열 차단과 함께 구현할 수 있습니다.

동적 URL 예제를 추가하십시오

사용자 메시지의 세부 정보 페이지와 같은 이미지 아래 링크를 표시하고 링크가 항상 M66.net 도메인 이름을 가리 킵니다.

 $url_text = "세부 사항을 참조하십시오: https://m66.net/guestbook/12345";
imagestring($image, 2, 10, 80, $url_text, $text_color);

이러한 방식으로 도메인 이름의 일부는 URL의 일부를 일관성있게 유지하며 다른 주석 내용에 맞게 경로 부분을 동적으로 교체 할 수 있습니다.

요약

ImageFontWidth ()를 사용하면 특히 메시지 보드, 슬로건 및 이미지 공유 카드 생성과 같은 가벼운 응용 프로그램 시나리오에 대해 간단한 이미지 텍스트 렌더링을 구축 할 때 레이아웃을 정확하게 제어 할 수 있습니다. 보다 복잡한 텍스트 렌더링 요구 사항을 처리하려면 고급 그래픽 기능을 사용하여 TrueType 글꼴로 전환하는 것을 고려하십시오.