PNG 파일에서 GIF 애니메이션 만들기


83

파일 gif세트에서 애니메이션 을 만드는 도구가 png있습니까?

ImageMagick 제품군 convert에서 명령을 시도했지만 항상 성공하지는 않습니다. 또한 몇 가지 문제가 있습니다.

  1. 진행 상황을 알 수 없습니다.
  2. 무엇을 시도하더라도 -delay플래그는 gif 애니메이션의 프레임 속도를 변경하지 않습니다.
  3. convert파일 이름의 알파벳 순서에 따라 프레임 순서를 결정합니다. 이것은 0을 추가하여이를 해결할 수 있지만 그 직후에 name500.png배치 될 것이지만 이것은 성가신 일입니다.name50.pngname450.png

[News] Ubuntu Stackexchange와 Unix Stackexchange가 크게 겹칩니다. 나는 몇 가지 스레드를 여기 에 분류하려고했습니다 .
hhh

항목 3에 대해서는 convert파일을 정렬 한 후에도 계속 사용할 수 있습니다. 아마,이 같은 작품files=$(ls name*png | sort -n -tname -k1); convert $files animation.gif
altroware

포인트 1 : 변환은이 -monitor과정을 추적 매개 변수
마도요

답변:


50

ffmpeg의 최신 버전에는 -sameq가 없지만 ( faq 참조 ) GIF는 지원됩니다.

ffmpeg -i %03d.png output.gif

여기서 % 03d는 3 자리의 프레임 ID입니다.

ffmpeg이미지 시퀀스에서 동영상을 만든 다음 동영상을 GIF 애니메이션으로 다시 변환 하려고 할 수도 있습니다 (다시 사용 ffmpeg).

# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html

# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4

# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif

10
이 명령은 오래되었습니다.
highmaintenance

3
sameq옵션은 더 이상 사용할 수 없습니다. 또한 나에게 이것은 원본 이미지 파일을 덮어 쓰고 유효한 동영상 파일을 생성하지 않습니다.
Lode

-sameq거기 에 코드 를 남기는 요점은 무엇입니까 ? 왜 손실 비디오 형식 ( output.mp4)을 임시로 사용하고 싶 습니까? 그렇다면 왜 비트 전송률이 매우 높은 대신 입력과 "품질이 동일"합니까? 이것으로부터의 아티팩트는 GIF 인코더를 위해 상황을 악화시킬 것입니다. 비디오를 임시로 사용해야한다면, huffyuv와 같은 무손실을 사용하고 싶을 것입니다. 또는 트랜스 코딩이없는 MJPEG는 입력 JPEG를 MJPEG로 리 먹싱하면됩니다. ( -codec:video copy).
Peter Cordes 2016

80

convert편리한 명령 줄 도구입니다. pngcd 파일을 포함하는 폴더에 다음 명령을 실행하십시오.

convert -delay 10 -loop 0 *.png animation.gif

출처 : http://ubuntuforums.org/showthread.php?t=1132058


5
질문은 언급 convert하고 그것을 사용하는 데 문제가 있습니다. 당신의 대답은 그들 중 어느 것도 다루지 않습니다.
Mat

3
ImageMagick 버전부터 6.8.7-4 2013-11-02 Q16이것은 나를 위해 일했습니다.
Rudy Matela

7
이것은 작동하지만 1010 * 10ms를 의미하므로 매우 빠릅니다. a의 지연 100은 1 초입니다.
Anne van Rossum

7
옵션을 사용 -dispose previous하거나 -dispose 2투명 PNG로 작업중인 경우
Hải Phong

4
자신에게주의 : 중괄호 확장은 예를 들어, 인수로 이미지 목록을 지정하는 데 도움이 될 수 있습니다 pic_{0..20..2}.png에 확장 pic_0.png, pic_2.png모든 방법에pic_20.png
Yibo 양

19

convert의의 --delay옵션은 명령 행에서 다음 이미지에 적용됩니다. 따라서 convert -delay 10 *첫 번째 프레임의 지연 시간 만 0.1 초로 설정합니다. 옵션을 반복해야합니다.

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

정렬이 필요한 경우 변환은 프레임을 정렬하지 않고 셸 globing *은 프레임을 정렬 합니다. 프레임 번호가 0에서 700까지 인 것을 알고 있다면 직접 숫자를 계산할 수 있습니다.

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif

5
이 동작은 convert에서 발생하지 않습니다 . 이미지 convert -delay 1000 -loop 0 *.png animation.gif사이에 10 초 지연이 추가되기 때문 입니다.
Lode

1
당신은 또한 사용할 수있는 버전 종류ls명령을 사용합니다. 즉 :convert -delay 1000 $(ls -v name*png) output.gif
에릭

7

최신 정보:

사용 convert후 사용하여 PNG - 투 - GIF에 대한 gifsicle을 애니메이션. 그것은 하나의 응용 프로그램이 아닙니다. 모든 솔루션이지만 스크립트 가능합니다.


김프애니메이션 GIF만들 수 있으며 타이밍 / 지연 및 반복 등에 대한 제어 기능을 제공합니다.


3
나는 김프에 대해 알고 있지만 스크립트를 작성하는 방법을 모른다. 게다가 애니메이션을 만들기 위해 김프를 사용하는 것은 대포로 비행을 죽이는 것과 같습니다
Yotam

1
나쁜 생각입니다. 각 프레임은 개별적으로 양자화되므로 품질은 끔찍합니다.
Clément

2

ImageMagick은 양질의 gif 애니메이션을 생성 할 수 있습니다. 이 비디오 확인-http://www.youtube.com/watch?v= OFusYizJ - bA


6
유닉스 및 리눅스에 오신 것을 환영합니다! 일반적으로 우리는 사이트에서 스스로 답변을 얻을 수있는 답변을 좋아합니다. 자세한 내용을 포함하려면 답변을 수정하십시오. 자세한 내용은 FAQ 를 참조하십시오.
slm

위의 유용한 의견 ....
누가 복음

convert -delay 200 -loop 0 *.jpg output.gif
Luke

2

ffmeg 중요한 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
ffmpeg \
  -framerate 60 \
  -pattern_type glob \
  -i 'tmp.*.png' \
  -r 15 \
  -vf scale=512:-1 \
  out.gif \
;

테스트 데이터는 https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 로 생성되었습니다.

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

  • -patter_type glob: 편리한 이미지 선택 방법
  • -framerate 60-r 15(입력 이미지에 60 FPS 가정 ffmpeg(그렇지 않으면 알고 비디오 형식으로 이미지의 어떤 FPS 데이터 이후 수), 하나 개 매 4 개 이미지가 너무 크기를 줄일 선택 4 == 60 / 15)
  • -vf scale=512:-1: 일반적으로 크기를 줄이고 공간을 절약하기 위해 너비, 스케일 높이를 비례 적으로 설정

또한보십시오:

우분투 18.10에서 테스트, ffmpeg 4.0.2.


-1

포인트 2와 관련하여

내가 가진 ImageMagick "디스플레이"버전 (ImageMagick 6.7.2-7 2017-01-12)의 버전은 애니메이션 gif를 생성하기 위해 convert 명령을 사용하여 설정된 프레임 속도를 무시합니다. firefox와 같은 애니메이션 GIF를 보려면 다른 프로그램을 사용해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.