병렬 프로그래밍 기말 과제를 하면서 N-Queens problem의 해를 찾아가는 과정을 동영상으로 만들 필요가 있어서 이런 저런 시도 끝에 알아낸 방법을 나중을 위해 기록해 둔다.
bottom line은 GIMP에서 pdf 파일에 삽입된 이미지를 import할 수 있는 기능과 imagemagick에서 photoshop 파일의 layer 별로 이미지를 추출해내는 기능을 이용한 것이다. 그리고 아래 방법은 연속된 이미지를 latex을 이용해 pdf로 만들었다는 가정하에 진행한 것이다.
1. latex에서 만들어진 pdf파일을 GIMP에서 읽어들여 모든 image를 import한 후 psd format (photoshop format)으로 저장시킨다.
2. 이렇게 불러진 이미지는 각각 별도의 layer에 저장된다.
3. imagemagick의 convert 명령을 이용하여 layer 별로 image 추출한다. 아래와 같은 명령을 이용하면 된다.
convert +adjoin anyfile.psd layer.png
이렇게 하면 layer와 .png 사이에 일련번호를 붙여주면서 layer를 추출하게 된다. 여기서 주의할 것은 일련번호 0은 지워도 되는 것 같다.(이미지 사이즈나 순서상 불필요한 이미지이다.)
4. 3.의 과정에서 추출된 이미지는 불필요한 공백이 많기 때문에 crop이 필요하다. 따라서 imagemagick을 이용해 필요한 부분을 잘라낸다. 이 부분 시행착오가 필요한 부분이 된다. crop 인자는 가로x세로+가로 시작 픽셀+세로 시작 픽셀 이며 가로는 왼쪽에서 오른쪽 방향, 세로는 위에서 아래 방향이다.
convert layer-01.png -crop 120x120+20+20 cropped.png
5. 이 과정에서 한가지 더 알아둘 것은 추출된 이미지의 일련번호는 원본의 이미지의 순서와 정반대로 일련번호가 붙게 된다. 따라서 가장 큰 번호를 가진 것이 애니메이션의 첫번째 파일이 된다. 이 부분은 sort 프로그램을 이용하면 간단히 수정할 수 있다.
bash script에서
list=`ls *.png | sort -r`
을 해주면 내림차순으로 정렬해서 리스트를 넘겨준다.
6. 동영상을 만드는 것은 imagemagick으로 만들어도 되지만 왠일인지 내 랩탐에서는 avi format은 지원이 되질 않고 있고 (mpg format은 된다.) 무엇보다 동영상 사이즈가 원본 이미지에 불필요한 공백이 들어가서 별로 마음에 들지 않는다. 대신에 mencoder를 이용하여 동영상을 만들도록 한다. (mencoder는 mplayer를 설치하면 사용가능하다.)
사용법은 wildcard를 이용하는 방법과 listfile을 작성한 뒤 이 파일을 이용하는 방법이다.
mencoder mf://*.png -mf type=png:fps=5 -ovc lavc -o output.avi
mencoder mf://@listfile -mf type=png:fps=5 -ovc lavc -o output.avi
(listfile을 이용할 경우 listfile명 앞에 @를 붙여주는 것을 잊지않도록 한다.)
fps값을 큰 값을 주면 각 프레임간 속도가 빨라지고 반대로 하면 느리게 전환된다.
7. wildcard를 이용할 경우 파일이 오름차순으로 정렬되어 만들어지므로 이 경우에는 listfile을 작성하여 avi 파일을 만들도록 한다.
나중에 위하여 shell script 를 첨부한다.
bottom line은 GIMP에서 pdf 파일에 삽입된 이미지를 import할 수 있는 기능과 imagemagick에서 photoshop 파일의 layer 별로 이미지를 추출해내는 기능을 이용한 것이다. 그리고 아래 방법은 연속된 이미지를 latex을 이용해 pdf로 만들었다는 가정하에 진행한 것이다.
1. latex에서 만들어진 pdf파일을 GIMP에서 읽어들여 모든 image를 import한 후 psd format (photoshop format)으로 저장시킨다.
2. 이렇게 불러진 이미지는 각각 별도의 layer에 저장된다.
3. imagemagick의 convert 명령을 이용하여 layer 별로 image 추출한다. 아래와 같은 명령을 이용하면 된다.
convert +adjoin anyfile.psd layer.png
이렇게 하면 layer와 .png 사이에 일련번호를 붙여주면서 layer를 추출하게 된다. 여기서 주의할 것은 일련번호 0은 지워도 되는 것 같다.(이미지 사이즈나 순서상 불필요한 이미지이다.)
4. 3.의 과정에서 추출된 이미지는 불필요한 공백이 많기 때문에 crop이 필요하다. 따라서 imagemagick을 이용해 필요한 부분을 잘라낸다. 이 부분 시행착오가 필요한 부분이 된다. crop 인자는 가로x세로+가로 시작 픽셀+세로 시작 픽셀 이며 가로는 왼쪽에서 오른쪽 방향, 세로는 위에서 아래 방향이다.
convert layer-01.png -crop 120x120+20+20 cropped.png
5. 이 과정에서 한가지 더 알아둘 것은 추출된 이미지의 일련번호는 원본의 이미지의 순서와 정반대로 일련번호가 붙게 된다. 따라서 가장 큰 번호를 가진 것이 애니메이션의 첫번째 파일이 된다. 이 부분은 sort 프로그램을 이용하면 간단히 수정할 수 있다.
bash script에서
list=`ls *.png | sort -r`
을 해주면 내림차순으로 정렬해서 리스트를 넘겨준다.
6. 동영상을 만드는 것은 imagemagick으로 만들어도 되지만 왠일인지 내 랩탐에서는 avi format은 지원이 되질 않고 있고 (mpg format은 된다.) 무엇보다 동영상 사이즈가 원본 이미지에 불필요한 공백이 들어가서 별로 마음에 들지 않는다. 대신에 mencoder를 이용하여 동영상을 만들도록 한다. (mencoder는 mplayer를 설치하면 사용가능하다.)
사용법은 wildcard를 이용하는 방법과 listfile을 작성한 뒤 이 파일을 이용하는 방법이다.
mencoder mf://*.png -mf type=png:fps=5 -ovc lavc -o output.avi
mencoder mf://@listfile -mf type=png:fps=5 -ovc lavc -o output.avi
(listfile을 이용할 경우 listfile명 앞에 @를 붙여주는 것을 잊지않도록 한다.)
fps값을 큰 값을 주면 각 프레임간 속도가 빨라지고 반대로 하면 느리게 전환된다.
7. wildcard를 이용할 경우 파일이 오름차순으로 정렬되어 만들어지므로 이 경우에는 listfile을 작성하여 avi 파일을 만들도록 한다.
나중에 위하여 shell script 를 첨부한다.
'리눅스(Gentoo)' 카테고리의 다른 글
| Pointwise linux 버전 문제 (0) | 2011/12/04 |
|---|---|
| find -exec 사용하기 (0) | 2011/12/02 |
| PDF파일이나 이미지 파일로 동영상 만들기 (0) | 2011/12/02 |
| firefox에서 Windows media player plugin 작동시키기 (1) | 2011/09/24 |
| Gnome에서 login후에 password 다시 물어보는거 안하게 만들기. (0) | 2011/09/13 |
| OpenFoam 설치후에 ParaFoam관련 설정 (0) | 2011/05/18 |
makeavi.sh
