>백엔드 개발 >PHP 튜토리얼 >애니메이션을 유지하면서 PHP에서 애니메이션 GIF의 크기를 어떻게 조정할 수 있나요?

애니메이션을 유지하면서 PHP에서 애니메이션 GIF의 크기를 어떻게 조정할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-07 21:16:03462검색

How can I resize animated GIFs in PHP while preserving animation?

PHP의 애니메이션 보존 기능을 사용하여 애니메이션 GIF 크기 조정

애니메이션을 유지하면서 애니메이션 GIF 크기를 조정하려면 ImageMagick과 같은 외부 도구를 사용하거나 GD 라이브러리 기능의 조합.

ImageMagick 방법:

ImageMagick에 액세스할 수 있는 경우 다음 명령을 사용하여 애니메이션 GIF의 크기를 조정할 수 있습니다.

system("convert big.gif -coalesce coalesce.gif");
system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");

GD 라이브러리 방법:

ImageMagick에 액세스할 수 없는 PHP 사용자의 경우 애니메이션 GIF 크기 조정에는 여러 단계가 필요합니다.

1. 이미지 유형 감지:
GD를 사용하여 이미지가 애니메이션 GIF인지 확인합니다.

2. 프레임으로 분할:
GD 라이브러리나 타사 클래스를 사용하여 GIF를 개별 프레임으로 분리합니다.

3. 프레임 크기 조정:
GD 라이브러리 기능을 사용하여 각 개별 프레임의 크기를 조정합니다.

4. 프레임 재구성:
GD 또는 전문 라이브러리를 사용하여 크기가 조정된 프레임을 새로운 애니메이션 GIF로 다시 조립합니다.

예제 코드:

// Get image
$sourceGif = imagecreatefromgif("big.gif");

// Determine if animated
if (gdImageAnimationLen($sourceGif) > 1) {
    // Split into frames
    $frames = $frames = gdImageSplitAnimation($sourceGif);

    // Resize frames
    $resizedFrames = [];
    foreach ($frames as $frame) {
        $resizedFrames[] = gdImageScale($frame, $newWidth, $newHeight);
    }

    // Recomposite GIF
    $newGif = $newGif = gdImageCreateAnimatedGif() ;
    foreach ($resizedFrames as $frame) {
        gdImageAddGif($newGif, $frame);
    }

    // Output GIF
    imagegif($newGif, "small.gif");
}

참고 이 방법은 병합 및 최적화 해제 프로세스로 인해 더 큰 파일 크기를 생성할 수 있습니다. 성능이 우려된다면 대신 ImageMagick을 사용해 보세요.

위 내용은 애니메이션을 유지하면서 PHP에서 애니메이션 GIF의 크기를 어떻게 조정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.