programing tip

ImageMagick을 사용하여 애니메이션 GIF를 자르려면 어떻게합니까?

itbloger 2021. 1. 7. 07:42
반응형

ImageMagick을 사용하여 애니메이션 GIF를 자르려면 어떻게합니까?


이미지 자르기에 대한 많은 정보가 있지만 애니메이션 자르기 (또는 자르기)를 시도하면 이상한 결과가 생성됩니다. 때때로 깜박이거나 추가 프레임과 함께 제공되거나 일부 프레임이 올바르게 자르고 다른 프레임이 오프셋됩니다. 이 모든 일이 발생하지 않도록하려면 어떻게해야합니까?


convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
  • 애니메이션 GIF는 종종 공간을 절약하기 위해 최적화되지만 imagemagick은 자르기 명령을 적용 할 때이를 고려하지 않고 각 프레임을 개별적으로 처리합니다. -coalesce전체 프레임을 다시 작성합니다.
  • 다른 명령은 원본 gif에 제공된 오프셋 정보를 고려하므로을 사용하여 강제로 재설정해야 -repage 0x0합니다.
  • 자르기 자체는 너비, 높이, x 오프셋 및 y 오프셋이 각각 제공되어 간단합니다. 예를 들어, 50 = 40x30 + 50 + 0의 x 오프셋에서 너비가 40이고 높이가 30 인 자르기.
  • 자르기는 이미지에서 잘라낸 캔버스를 제거하지 않습니다. +repage자르기 후에 적용하면 됩니다.

합쳐지고 다시 페이지를 표시하더라도 ImageMagick이 애니메이션 GIF를 잘 자르고 크기를 조정할 수 없었습니다.

Gifsicle 이라는 프로그램을 찾았고 애니메이션 GIF를 조작하는 데 매우 효과적입니다.

gifsicle --crop 0,0-100,100 --output out.gif in.gif

또한 모든 종류의 다른 작업을 수행 할 수 있습니다. 확인 해봐!


다음 줄은 Mac에서 나와 함께 일했습니다.

convert -dispose 2 input.gif -trim -layers TrimBounds animation.gif

여기에 소스가 있습니다


애니메이션은 종종 최적화되어 일부 프레임이 다른 프레임보다 작습니다. 따라서 ImageMagick에서는 자르기 전에 애니메이션을 통합하고 싶을 것입니다.

convert in_animation.gif -coalesce -crop WxH+X+Y +repage -layers optimize out_animation.gif


깜박임을 방지하기 위해 입력 애니메이션을 읽기 전에 -dispose 메서드를 추가해야 할 수 있습니다. 또한 변경하려면 끝에 -delay 및 -loop를 설정하십시오.

보다

http://www.imagemagick.org/Usage/anim_basics/#dispose http://www.imagemagick.org/Usage/anim_basics/#coalesce http://www.imagemagick.org/script/command-line-options. php # layers

참조 URL : https://stackoverflow.com/questions/14036765/how-do-i-crop-an-animated-gif-using-imagemagick

반응형