.gif
주어진 그림 세트에서 애니메이션 그림을 만들고 싶습니다 .jpg
.
나는 커맨드 라인에서 그것을 선호하기 때문에 커맨드 라인 도구는 매우 환영받을 것입니다.
.gif
주어진 그림 세트에서 애니메이션 그림을 만들고 싶습니다 .jpg
.
나는 커맨드 라인에서 그것을 선호하기 때문에 커맨드 라인 도구는 매우 환영받을 것입니다.
답변:
ImageMagick 패키지 를 사용할 수 있습니다 . 다음 명령을 사용하여 설치하십시오.
sudo apt-get install imagemagick
이제 다음을 사용하여 gif
여러 그림 ( jpg
)을 만들 수 있습니다 .
convert -delay 20 -loop 0 *.jpg myimage.gif
-resize 50%
.
-deconstruct
입니다. 나는 또한 ImageMagick이 매우 메모리 배고픈 것을 발견 한 벤치 마크를 참조하십시오 askubuntu.com/a/1102183/52975
convert -delay 0 -loop 0 *.tif myanimated.gif
720 tif 파일에서 훌륭하게 작동했습니다
@ Maythux 답변을 완료하려면 :
-resize
옵션 을 사용할 수 있습니다 .제 경우에는 4608x3456 이미지가 있고 생성 된 gif는 32 이미지의 300M 이상이었습니다.
convert -resize 20% -delay 20 -loop 0 *.jpg myimage.gif
또는
convert -resize 768x576 -delay 20 -loop 0 *.jpg myimage.gif
*.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에서는 숫자로 정렬하는 것이 매우 까다 롭습니다. 사용자 정의 스크립트를 작성해야한다고 생각합니다.
find
, sort
등등, 중괄호 확장하고 있습니다. 이 ls
도구는 이런 종류의 것에 부적합합니다. 사용하십시오 find
. 약간의 학습 곡선이 있지만 그만한 가치가 있습니다.
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 1024x1024 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.gif
GIF는 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
전체 1024x1024 대신에이며 오프셋에 배치됩니다 252+257
. 따라서 가운데 삼각형 만 포함합니다.
-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
우리는 그것을 볼 수 있습니다 :
테스트 하드웨어 : Lenovo ThinkPad P51 노트북 , Intel Core i7-7820HQ, 32GB (16 + 16) DDR4 2400MHz SODIMM, 512GB SSD PCIe TLC OPAL2.
-r
및 -v
명령, 여전히 출력 GIF 원본 PNG 파일보다 훨씬 낮은 품질이다. 주어진 png 파일과 동일한 gif 품질을 유지하는 방법은 무엇입니까?
-framerate 60 -r 60
. ImageMagick 도구를 사용하여 생성 된 GIF 및 입력 이미지를 검사하여 identify
진행중인 작업을 파악하십시오.
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의 예와 동일합니다.
convert -delay 20 -loop 0 *.png out.gif
반복되는 GIF를 만듭니다.