PHP에서 이미지를 처리 할 때 ImageFontWidth ()는 내장 글꼴 문자의 너비를 얻는 일반적인 기능입니다. 텍스트 이미지를 동적으로 생성 할 때 텍스트 콘텐츠를 포지셔닝하는 것이 매우 중요합니다. 그러나 디스플레이 장치가 고해상도 (HDPI)로 진화함에 따라 많은 개발자가 ImageFontWidth ()가 고해상도 이미지에 정확하게 적응할 수 있는지 여부에주의를 기울이기 시작했습니다.
이 기사는 고해상도 이미지에서 ImageFontWidth ()의 성능에 대한 더 깊은 토론을 통해 한계와 모범 사례를 이해하는 데 도움이됩니다.
ImageFontWidth () 함수는 주어진 내장 글꼴로 문자의 너비를 픽셀로 반환합니다. 사용의 예는 다음과 같습니다.
<?php
$font = 5; // PHP내장 글꼴 번호,범위1-5
$width = imagefontwidth($font);
echo "글꼴 너비는입니다:$width 픽셀";
?>
여기서 반환 된 너비는 표준 해상도의 픽셀 수를 기준으로하며 이미지의 실제 물리적 크기 또는 해상도를 포함하지 않습니다.
고해상도 이미지는 일반적으로 인쇄 또는 망막 디스플레이와 같은 장치의 경우 300 PPI 이상과 같은 인치당 더 높은 픽셀 (PPI)의 이미지를 나타냅니다. 고해상도 이미지에는 동일한 물리적 크기로 더 많은 픽셀이 포함되어있어 더 명확한 시각적보기가 발생합니다.
그러나 PHP GD 라이브러리에서 이미지를 만들 때 픽셀은 여전히 가장 작은 작동 장치이며 해상도 정보는 일반적으로 직접 인코딩되거나 사용되지 않습니다. PHP GD는 높은 PPI 환경과 일치하도록 글꼴 폭을 자동으로 조정하지 않습니다.
ImageFontWidth () 는 고정 된 내장 글꼴 픽셀 크기를 기반으로 너비를 반환하므로 이미지 해상도에 따라 자동으로 확대되거나 확대되지 않습니다. 예를 들어:
<?php
$font = 3;
$width = imagefontwidth($font);
$img = imagecreatetruecolor(600, 400);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $white);
imagestring($img, $font, 50, 50, "고화질 테스트", $black);
// 출력 글꼴 폭
echo "문자 너비:$width 픽셀";
// 이미지를 저장하십시오
imagepng($img, 'test.png');
imagedestroy($img);
?>
생성 된 이미지를 HD 디스플레이로 확대하는지 여부에 관계없이 ImageFontWidth ()가 반환 한 너비 값은 항상 변경되지 않습니다. 이것은 다음을 의미합니다.
이미지 크기가 확대 된 텍스트를 그린 경우 내장 글꼴 크기는 여전히 고정 된 픽셀 크기이며 텍스트는 자동으로 "HD"가되지 않습니다.
문자 너비 값은 실제 렌더링 된 픽셀과 일치하며 고화질 디스플레이의 증폭 요구 사항을 반영 할 수 없습니다.
Truetype 글꼴 및 imagetftext () 사용
내장 글꼴과 비교하여 imageTtftext ()는 사용자 정의 글꼴 파일과 임의의 글꼴 크기를 지원하며 다른 해상도에보다 유연하게 적응할 수 있습니다.
<?php
$img = imagecreatetruecolor(600, 400);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $white);
$fontFile = 'm66.net/fonts/arial.ttf'; // 사용자 정의 글꼴 경로
$fontSize = 20; // 글꼴 크기,요구 사항에 따라 조정할 수 있습니다
imagettftext($img, $fontSize, 0, 50, 100, $black, $fontFile, "고화질 테스트");
// 이미지를 생성하십시오
imagepng($img, 'test_ttf.png');
imagedestroy($img);
?>
텍스트 너비를 동적으로 계산합니다
imagetfbbox () 함수는 지정된 글꼴과 크기 아래 주어진 텍스트의 경계 상자를 반환하며, 이는 텍스트 너비를 정확하게 계산하는 데 사용할 수 있습니다.
<?php
$fontFile = 'm66.net/fonts/arial.ttf';
$fontSize = 20;
$text = "고화질 테스트";
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = $bbox[2] - $bbox[0]; // 하단 오른쪽 코너x동등 어구 - 왼쪽 상단x동등 어구
echo "텍스트 너비는입니다:$textWidth 픽셀";
?>
고해상도 이미지에서 더 큰 글꼴을 그립니다
고해상도 이미지에서 더 큰 글꼴 크기를 사용하고 디스플레이 스케일링에 따라 도면을 사용하면 텍스트 명확성을 보장 할 수 있습니다.
ImageFontWidth ()는 이미지 해상도에 관계없이 고정 된 픽셀에서 내장 글꼴의 문자 너비를 반환합니다.
고해상도 이미지 환경에서 ImageFontWidth ()는 글꼴 크기의 실제 물리적 폭을 정확하게 반영 할 수 없으므로 고화질 장치에서 텍스트가 흐리거나 부지런 해 보일 수 있습니다.
고해상도 이미지 요구 사항에 적응하기 위해 텍스트 너비 및 크기를 동적으로 제어하기 위해 벡터 글꼴을 지원하는 imageTtfText () 및 imageTtfbbox ()를 사용하는 것이 좋습니다.
TTF 글꼴을 사용하고 텍스트 경계를 계산하면 고품질의 고화질 텍스트 이미지를 유연하게 그릴 수 있습니다.