스틸 이미지에서 애니메이션 GIF를 만들려면 어떻게해야합니까? 커맨드 라인에서 그것을

.gif주어진 그림 세트에서 애니메이션 그림을 만들고 싶습니다 .jpg.

나는 커맨드 라인에서 그것을 선호하기 때문에 커맨드 라인 도구는 매우 환영받을 것입니다.



답변

ImageMagick 패키지 를 사용할 수 있습니다 . 다음 명령을 사용하여 설치하십시오.

sudo apt-get install imagemagick

이제 다음을 사용하여 gif여러 그림 ( jpg)을 만들 수 있습니다 .

convert -delay 20 -loop 0 *.jpg myimage.gif

답변

@ Maythux 답변을 완료하려면 :

매우 큰 파일을 생성하지 않으려면 -resize옵션 을 사용할 수 있습니다 .

제 경우에는 4608×3456 이미지가 있고 생성 된 gif는 32 이미지의 300M 이상이었습니다.

convert -resize 20% -delay 20 -loop 0 *.jpg myimage.gif

또는

convert -resize 768x576 -delay 20 -loop 0 *.jpg myimage.gif

* .jpg 관리

*.jpg 숫자 값을 처리 할 때 조금 짜증 나면 정렬되지 않은 사진으로 gif를 생성 할 수 있습니다.

$ ls|cat
21-33-26_1.jpg
21-33-26_10.jpg   // <--- this one
21-33-26_2.jpg
21-33-26_3.jpg
21-33-26_4.jpg
21-33-26_5.jpg
21-33-26_6.jpg
21-33-26_7.jpg
21-33-26_8.jpg
21-33-26_9.jpg
21-33-28_1.jpg    // <--- should be here
21-33-28_2.jpg
21-33-28_3.jpg
...

샷이 매우 빠르게 (10 / s) 촬영되었으므로 모두 수정 시간이 동일 ls -t하며 예를 들어 속임수를 쓸 수 없습니다 . 우분투에서는 ls -v대신 다음과 같이 사용할 수 있습니다 .

convert -resize 768x576 -delay 20 -loop 0 `ls -v` myimage.gif

Mac OS X에서는 숫자로 정렬하는 것이 매우 까다 롭습니다. 사용자 정의 스크립트를 작성해야한다고 생각합니다.


답변

나는 의견을 말할만큼 평판이 좋지 않지만 파일 이름을 수정하는 대신 globbing을 사용하여 쉘이 파일 이름을 확장하도록 할 수 있습니다

convert -resize 50% -delay 10 -loop 0 image_{0..99}.jpg output.gif

답변

김프로 쉽게 할 수 있습니다. 아직 설치되어 있지 않은 경우 먼저 설치하십시오.

sudo apt-get install gimp

GIF 만들기

김프에서 파일 -> 레이어열기로 이동하여 모든 레이어 를 자체 레이어 에서 엽니 다.

여기에서 레이어에 대한 편집을 수행하고 완료되면 파일 -> 다른 이름으로 내보내기로 이동하십시오 . 대화 상자에서 파일 형식을 GIF로 설정하십시오.

거기에서 GIF 내보내기 옵션으로 이동합니다. ‘ 애니메이션으로 ‘옵션을 선택하고 필요에 따라 매개 변수를 설정하십시오.


답변

ffmeg 솔루션 + 테스트 데이터

우분투 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8에서 ffmpeg가 훨씬 빠르며 훨씬 적은 메모리를 사용한다는 것을 알았습니다 .

가장 간단한 변환 명령은 다음과 같습니다.

ffmpeg \
  -framerate 60 \
  -pattern_type glob \
  -i '*.png' \
  -r 15 \
  -vf scale=512:-1 \
  out.gif \
;

다음을 사용하여 테스트 데이터를 얻을 수 있습니다.

wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle

테스트 데이터는 https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 에서 생성되었으며 256 1024×1024 PNG 이미지를 포함합니다.

그리고 여기 브라우저에서 직접 생성 할 수있는 또 다른 테스트 데이터가 있습니다! https://stackoverflow.com/questions/19235286/convert-html5-canvas-sequence-to-a-video-file/57153718#57153718

ffmpeg강조하고 싶은 중요한 옵션은 다음과 같습니다.

  • -pattern_type glob: 편리한 이미지 선택 방법

  • -framerate 60: 입력 이미지에서 60FPS를 가정하고 동일한 FPS를 출력합니다.

    ffmpeg 비디오 형식과 마찬가지로 이미지에 FPS 데이터가 없기 때문에 달리 알 수 없습니다.

    256 개의 입력 프레임이 완료되는 데 약 4 초가 걸립니다.

    -r 15: 선택 사항. 4 개의 이미지마다 하나씩 선택하여 크기를 줄이십시오 ( 4 == 60 / 15).

    그것으로 identify out.gifGIF는 64 프레임 만 포함한다고 말합니다.

    여전히 재생하는 데 4 초가 걸리므로 일이 일치하도록 지연이 변경됩니다.

  • -vf scale=512:-1: 선택 사항. 일반적으로 크기를 줄이고 공간을 절약하려면 너비, 배율 높이를 비례 적으로 설정하십시오.

ImageMagick을 작동 시키려면 먼저 https://superuser.com/questions/1178666/imagemagick-convert-quits-after-some-pages에/etc/ImageMagick-6/policy.xml 설명 된대로 디스크 및 메모리 제한을 수정해야 했습니다.

또한보십시오:

ImageMagick 및 ffmpeg 벤치 마크

나는 명령을 비교했다 :

/usr/bin/time -v convert *.png -deconstruct -delay 1.6 out-convert.gif
/usr/bin/time -v ffmpeg \
  -framerate 60 \
  -pattern_type glob \
  -i '*.png' \
  out-ffmpeg.gif \
;

명령은 비교를 유효하게하기 위해 가능한 한 가까운 출력을 생성하도록 구성되었습니다.

  • /usr/bin/time -v: https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process에 설명 된대로 최대 메모리 사용량을 찾는 데 사용됩니다.

  • -deconstruct: GIF 이미지는 이전 프레임에서 수정 된 최소 사각형 만 포함하여 GIF를 더 작게 만들 수 있습니다.

    ffmpeg기본적으로 이러한 차이를 계산하지만, -deconstruct사용 하지 않으면 ImageMagick은 그렇지 않습니다 .

    기본적으로 ImageMagick과 함께이 옵션을 사용하려고합니다.

    다음과 같은 차이점을 관찰 할 수 있습니다.

    identify out.gif
    

    압축 버전을 사용하면 모든 프레임의 크기가 초기 프레임보다 작습니다. 예 :

    out.gif[0] GIF 1024x1024 1024x1024+0+0 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
    out.gif[1] GIF 516x516 1024x1024+252+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
    out.gif[2] GIF 515x520 1024x1024+248+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
    

    이 예에서 두 번째 프레임은 516x516전체 1024×1024 대신에이며 오프셋에 배치됩니다 252+257. 따라서 가운데 ​​삼각형 만 포함합니다.

    참조 : 내가 ImageMagick이를 사용하여 애니메이션 GIF 파일의 크기를 조정할 수있는 방법?

  • -delay:의 60FPS와 일치하는 값입니다 ffmpeg. 전환 실적은 중요하지 않지만 전환 위험을 감수하고 싶지 않습니다.

출력 GIF는 크기가 거의 같고 시각적으로 동일하게 보입니다.

우리는 ImageMagick을 얻습니다.

Elapsed (wall clock) time (h:mm:ss or m:ss): 0:56.16
Maximum resident set size (kbytes): 2676856

ffmpeg의 경우 :

Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.41
Maximum resident set size (kbytes): 97172

우리는 그것을 볼 수 있습니다 :

  • ImageMagick은 2.6Gb의 RAM을 사용했으며 약 1 분이 걸렸습니다.
  • ffmpeg는 100Mb의 RAM을 사용했으며 4 초가 걸렸습니다.

테스트 하드웨어 : Lenovo ThinkPad P51 노트북 , Intel Core i7-7820HQ, 32GB (16 + 16) DDR4 2400MHz SODIMM, 512GB SSD PCIe TLC OPAL2.


답변

imagemagick 패키지에 포함 된 convert라는 프로그램을 사용할 수 있습니다. 명령 줄 방식이지만 사용하기가 매우 쉽습니다. 소프트웨어 센터를 통해 설치하거나 명령 프롬프트로 이동하여 다음을 입력하십시오.

sudo apt-get install imagemagick

이제 .gif를 만듭니다.

convert -delay 100  -size 100x100 xc:SkyBlue \
          -page +5+10  balloon.gif   -page +35+30 medical.gif  \
          -page +62+50 present.gif   -page +10+55 shading.gif  \
          -loop 0  animation.gif

* 위의 예는 Image Magick의 예와 동일합니다.