PHP로 이미지 워터 마크를 만들 때, 우리는 종종 오른쪽 하단 또는 중앙과 같은 이미지의 특정 위치에 텍스트가 정확하게 나타나기를 원합니다. 그러나 글꼴의 크기와 각 문자의 너비 때문에 워터 마크의 위치를 계산하는 것이 종종 번거 롭습니다. 다행히도 PHP의 ImageFontWidth () 함수는 특히 내장 글꼴을 사용할 때이 문제를 해결하여 텍스트 너비를 정확하게 계산하여 텍스트의 정확한 위치를 달성하는 데 도움이 될 수 있습니다.
ImageFontWidth () 는 지정된 글꼴 번호로 각 문자의 픽셀 너비를 반환하는 PHP의 GD 라이브러리 기능 중 하나입니다. 구문은 다음과 같습니다.
int imagefontwidth(int $font);
이 기능은 1 ~ 5 와 같은 GD 라이브러리에 내장 된 글꼴에만 적합합니다. imagetftext () 에서로드 한 TTF 글꼴을 사용하는 경우 imageTtfbbox ()를 사용하여 크기를 계산하십시오.
텍스트 워터 마크를 그림에 추가 할 때는 시작 좌표를 결정하려면 워터 마크 텍스트의 너비 와 높이를 명확히해야합니다. 예를 들어, 오른쪽 하단에 워터 마크가 나타나려면 WaterMark 텍스트의 너비를 알아야하여 이미지의 오른쪽에서 x 좌표로 빼낼 수 있습니다.
그러나 많은 사람들은 스트링 길이를 너비 참조로 직접 사용합니다. 각 글꼴의 문자 너비는 다를 수 있으며, 동일한 글꼴에서도 다른 문자 너비가 다를 수 있습니다 (특히 단편 글꼴과 넓은 글꼴).
특정 예를 살펴 보겠습니다. 그림의 오른쪽 하단에“Copyright M66.net”에 텍스트를 추가하고 싶습니다.
<?php
// 사진로드
$image = imagecreatefromjpeg('background.jpg');
// 글꼴 번호와 텍스트를 설정하십시오
$font = 4; // 내장 글꼴 번호 1-5
$text = '모든 권리 보유 m66.net';
// 텍스트 너비와 높이를 얻으십시오
$textWidth = imagefontwidth($font) * strlen($text);
$textHeight = imagefontheight($font);
// 이미지 크기를 얻으십시오
$imageWidth = imagesx($image);
$imageHeight = imagesy($image);
// 텍스트 색상을 설정하십시오(하얀색)
$textColor = imagecolorallocate($image, 255, 255, 255);
// 텍스트의 왼쪽 상단 코너 좌표를 계산합니다(오른쪽 하단에 오프셋10픽셀)
$x = $imageWidth - $textWidth - 10;
$y = $imageHeight - $textHeight - 10;
// 텍스트를 작성하십시오
imagestring($image, $font, $x, $y, $text, $textColor);
// 출력 이미지
header('Content-Type: image/jpeg');
imagejpeg($image);
// 자원을 파괴하십시오
imagedestroy($image);
?>
이 코드에서 ImageFontWidth ($ font)는 각 문자의 너비를 반환합니다. Strlen ($ 텍스트)은 문자 수를 반환하여 두 텍스트의 픽셀 너비를 얻기 위해 두 가지를 곱합니다. 그런 다음 이미지 너비에서 텍스트 너비와 여백을 빼면 오른쪽 하단의 정확한 좌표가 나타납니다.
ImageFontWidth () 는 간단하지만 매우 유용한 도구로 GD 내장 글꼴을 사용하여 워터 마크 포지셔닝을 처리 할 때보다 정확하게 보일 수 있습니다. ImageFonTheight ()를 사용하면 모든 위치 (왼쪽 상단, 오른쪽, 중앙 등)를 정확하게 제어 할 수 있습니다. 사용자 정의 TTF 글꼴 사용과 같은보다 복잡한 텍스트 렌더링이 필요한 상황의 경우보다 복잡한 경계 계산에 imagetfbbox ()를 사용하는 것을 고려하십시오.
ImageFontWidth () 및 ImageFonTheight ()를 사용하여 이미지에 워터 마크를 추가해도 정확하고 효율적입니다.