PNG 스트립을 GIF로 변환하는 방법?


12

따라서 프로그램 에서이 애니메이션을 만들었지 만 PNG 시퀀스로 내보내기를 지원하지 않으므로 GIF로 변환 할 수 없습니다. 애니메이션은 100 프레임 이상이므로 각 이미지를 하나씩 저장하면 시간이 오래 걸립니다. 그러나 영화 필름과 같은 "스트립"으로 내보내기를 지원합니다. 애니메이션의 각 그림의 크기는 동일합니다. 다음은 프로그램의 "스트립"기능이 작동하는 방식입니다.

애니메이션의 이미지는 가로로 쌓이며 첫 번째 프레임은 가장 왼쪽이고 마지막 프레임은 가장 오른쪽입니다. 프레임 사이에 간격이 없으며 애니메이션에 X 프레임이있는 경우 파일 이름은 일반적으로 "name_stripX.png"입니다. 각 프레임이 32 x 32이고 애니메이션에 8 개의 프레임이 있으면이 파일의 너비는 256이고 높이는 32입니다.

다음은 출력 예입니다. 각 색상은 한 프레임에 채워집니다.

출력 예

또한 조금 더 정리하기 위해이 프로그램을 "Game Maker 8.0"이라고합니다.

답변:


16

ImageMagick 을 사용 하여 다양한 방식으로 이미지를 변환 할 수 있으며이 작업 을 매우 쉽게 수행 할 수 있습니다. 먼저 부분으로 분할 할 수 있습니다 ( original.png소스 이미지,이 경우 크기는 32x32 픽셀).

convert original.png -crop 32x32 parts-%02d.png

그런 다음 애니메이션으로 변환 할 수 있습니다 ( -loop 1루프하지 않으려는 경우 사용 ).

convert -loop 0 -page +0+0 ./parts*.png output.gif

를 야기하는:

첫 번째 명령의 출력 PNG에는 오프셋이 포함되어 있으므로 -page +0+0옵션 없이 애니메이션은 다음과 같이 끝납니다.

등 (주로 두 번째 명령)에 포함시킬 수있는 다양한 다른 옵션이 있습니다 -delay등 - 당신은 또한 수있는 애니메이션을 최적화 가 작 있도록 (빠른 부하에 / 렌더링) - 예를 들면 빌려 에서 여기 :

convert output.gif -fuzz 10% -layers Optimize optimised.gif

또는 gifsicle 사용

gifsicle -O output.gif -o optimised.gif

편집 : 프레임이 투명
-dispose Background하면 다음 프레임이로드 될 때 프레임이 폐기 될 때 옵션 을 추가하여 프레임을 교체하도록 설정할 수 있습니다 .


page옵션 없이 수행 된 위의 예 는 명확하게 표시됩니다.

이것의 문제점은 아마도 결과 이미지를 많이 최적화 할 수 없다는 것입니다. 따라서 다른 방법은 다음 프레임이 이전 프레임을 덮도록 프레임을 불투명하게 만드는 것입니다.


이미지는 투명도를 가지며 기본적으로 이전 프레임 위에 다음 프레임을 그리는 것입니다. 빈 프레임 위에 다음 프레임을 그릴 수 있도록 만들 수있는 방법이 있습니까?
user245115

소스 이미지에서 투명도를 제거하는 것이 가장 쉬운 방법입니다. 그러나 더 많은 매개 변수로 수행 할 수 있습니다.
david6

@ user245115-오버레이 대신 프레임을 교체합니다 (편집 참조).
Wilf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.