pic 파일의 도형을 GIF로 변환하면 전체 페이지가 아니라 도형 부분만 웹 문서에 넣을 수 있다. 다음 절차는 BSD/OS 3.0에서 제공되는 도구를 사용한다.
예시 파일 pic.ms의 내용은 다음과 같다.
.EQ
delim $$
.EN
.PS
arrow
box "$space 0 {H( omega )} over {1 - H( omega )}$"
arrow
.PE
먼저 groff로 PostScript 파일을 만든다.
groff -e -p -ms pic.ms > file1.ps
ghostscript로 전체 8.5×11인치 페이지 크기의 GIF를 생성한다. 해상도는 도형의 글자와 크기, 원하는 결과물 크기에 맞춰 바꿀 수 있다. 이 예시에서는 150×150 해상도로 1280×1650 픽셀 이미지가 생성됐다.
gs -q -sDEVICE=gifmono -sOutputFile=file1.gif -r150x150 file1.ps < /dev/null
도형만 잘라내려면 먼저 GIF에서 PostScript 경계 상자 정보를 얻는다.
giftopnm file1.gif | pbmtoepsi -bbonly
출력은 다음과 같다.
%!PS-Adobe-2.0 EPSF-1.2
%%BoundingBox: 150 1401 412 1475
경계 상자의 네 숫자는 PostScript 좌표계 기준으로, 원점 (0,0)이 왼쪽 아래에 있다. 반면 pnmcut은 원점이 왼쪽 위라고 가정한다. 경계 상자의 숫자를 차례로 a, b, c, d라고 할 때 pnmcut에 넘길 값은 a, -d, (c-a+1), (d-b+1)이다. 예시에서는 다음 명령으로 도형을 잘라 GIF로 저장하며, 결과 크기는 263×75 픽셀이다.
giftopnm file1.gif | pnmcut 150 -1475 263 75 | ppmtogif > file2.gif
더 간단한 방법도 있다. 스콧 슈워츠(Scott Schwartz)가 알려준 방식으로, pnmcrop이 경계 상자 방식과 같은 효과를 낸다.
gs -q -sDEVICE='ppmraw' -sOutputFile='-' -dBATCH -dNOPAUSE file1.ps | pnmcrop | ppmtogif > file2.gif
다만 pnmcrop은 메모리를 많이 사용할 수 있어 프로그램의 데이터 공간을 늘려야 할 수 있다. KornShell에서는 ulimit을, C Shell에서는 limit을 사용한다. 예시에서는 KornShell에서 데이터 크기를 64MB로 늘리기 위해 다음 명령을 실행한다.
ulimit -d 65535
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요