PHP에서 캐릭터 애니메이션 효과를 만드는 것은 JavaScript 또는 CSS를 사용하는 것만 큼 직관적이지는 않지만 ImageFontWidth () 와 같은 GD 라이브러리의 일부 기능을 사용하면 여전히 흥미로운 동적 문자 효과를 달성 할 수 있습니다. 이 기사에서는 이미지를 사용하는 방법을 설명하여 루프를 결합하여 "애니메이션"의 프레임 시퀀스를 생성하고 마지막으로 애니메이션을 시뮬레이션하는 동적 효과로 출력합니다.
ImageFontWidth ()는 지정된 글꼴 너비를 얻는 데 사용되는 PHP GD 라이브러리의 함수입니다. 그 목적은 imagestring () 및 imagestringup () 함수가 사용하는 픽셀에서 글꼴 너비를 반환하는 것입니다. 이 기능은 특히 이미지에서 문자의 정확한 위치를 제어하는 데 적합합니다.
$font = 5;
$charWidth = imagefontwidth($font);
이 예에서는 글꼴을 5로 설정하고 imageFontWidth ()를 사용하여 각 문자의 너비를 얻습니다.
간단한 애니메이션 효과를 만들어 봅시다. 캐릭터가 왼쪽에서 오른쪽으로 움직입니다. 각 프레임은 이미지이며 문자의 위치는 프레임 번호에 따라 결정됩니다. ImageFontWidth ()를 사용하여 이미지에서 문자의 수평 오프셋을 정확하게 계산하십시오.
<?php
$font = 5;
$char = '*';
$frameCount = 20;
$imageWidth = 200;
$imageHeight = 40;
$charWidth = imagefontwidth($font);
// 여러 프레임을 동적으로 생성합니다
for ($frame = 0; $frame < $frameCount; $frame++) {
$im = imagecreate($imageWidth, $imageHeight);
$bgColor = imagecolorallocate($im, 255, 255, 255);
$textColor = imagecolorallocate($im, 0, 0, 0);
// 문자를 계산합니다 x 동등 어구
$x = ($charWidth * $frame) % $imageWidth;
$y = ($imageHeight - imagefontheight($font)) / 2;
imagestring($im, $font, $x, $y, $char, $textColor);
// 프레임을 그대로 저장하십시오 PNG 문서
$filename = "frame_$frame.png";
imagepng($im, $filename);
imagedestroy($im);
}
?>
위의 코드는 스크립트가 실행 된 후 20 개의 PNG 이미지를 생성하고 각 이미지의 * 문자는 하나의 문자 너비를 이전 것보다 오른쪽으로 이동합니다.
PHP 자체는 GIF 애니메이션을 직접 생성 할 수는 없지만 Imagemagick과 같은 외부 도구를 사용하여 이러한 프레임을 GIF 애니메이션으로 합성 할 수 있습니다.
convert -delay 10 -loop 0 frame_*.png animation.gif
또는 방문 https://m66.net/tool/gifmaker 와 같은 온라인 도구를 사용하여 애니메이션을 종합하기 위해 이러한 이미지 프레임을 업로드하십시오.
캐릭터 움직임을 앞뒤로 구현하려면 $ 프레임을 "왕복"시퀀스에 매핑 할 수 있습니다.
$step = $frame % ($frameCount * 2);
$offset = $step < $frameCount ? $step : (2 * $frameCount - $step - 1);
$x = ($charWidth * $offset) % $imageWidth;
이런 식으로 캐릭터는 이미지에서 앞뒤로 움직여 애니메이션의 재미를 더욱 향상시킵니다.