본문 바로가기
만드는 이야기/GIF 이야기

ef - a fairy tale of the two - the first tale 에서 추출한 ani 파일 tga 변환법 파이선 스크립트 추가

by LillyLt 2013. 11. 27.

================ 최종 파일 ==================


ef.py


어이없게도 다른사이트에서 찿은 변환 프로그램이 정상 작동을 안함...

그에 반해 내 프로그램은 아주 잘 작동됨.


물론 효율은 떨어지긴 하겠지만

최소한 100%는 제대로 작동되니 위안중

근데 이미지 결과물이 세로 반전이 되있는데

이걸 프로그래밍으로 재정렬 할 늘역이 나한텐 안됨;;




================= 이하 이전 내용 =================

http://blog.naver.com/lilly1987/92364500


 ef - a fairy tale of the two - the first tale 에서 추출한 ani 파일 tga 변환법

tga 무압축 형식인데다가 구조도 졸래 간단해서 다행이였음

뭐 데이터 구조 이해를 잘 아시는 분이시면 이 스샤 한장으로도 충분..


초급인 나한텐 이정도가 한계

문제는 헤더 크기가 일정하지 않다는점[이게 치명적. 스크립트가 길어지는 원인]

결국 20 00 라는 문자열 위치를 찿아야 하는데

찿는 스크립트를 못짜겠어 ㅅㅂ...



프로그램 시작

새파일1 생성

00 00 02 00 

00 00 00 00 

00 00 00 00 

값을 새파일1  쓴다 

원본 읽기 위치를 10바이트 건너 띈다 [원본 파일 읽기 위치를 0x12 로 이동]

원본 파일 0x12 부터 2바이트값을 얻어서[이미지 가로 크기] 새파일1에 이어서 쓴다. 

동시에 변수 w 에 넣는다.

 원본 파일 0x14 부터 2바이트값을 얻어서[이미지 세로 크기] 새파일1에 이어서 쓴다

동시에 변수 h 에 넣는다.

20 08 값을 새파일1에 이어서 쓴다

원본 읽기 위치를 4바이트 건너 띈다 [원본 읽기 위치를 0x1c로 이동]

원본 파일 0x1c 부터 w * h * 4 바이트 만큼의 데이터량을 복사해서 새파일1에 이어서 쓴다.

원본 읽기 위치를 8바이트 건너 띈다 [만약 데이터 없으면 프로그램 중지] -여기부터 루트

새파일2 생성

00 00 02 00 

00 00 00 00 

00 00 00 00 

값을 쓴다 

2바이트값을 읽어서[그만큼 읽기 위치 이동]  새파일2에 이어서 쓴다.

동시에 변수 w 에 넣는다.

2바이트값을 읽어서[그만큼 읽기 위치 이동]  새파일2에 이어서 쓴다.

동시에 변수 h 에 넣는다.

20 08 값을 새파일2에 이어서 쓴다

원본 파일 부터 w * h * 4 바이트 만큼의 데이터량을 복사해서 새파일2에 이어서 쓴다. - 루트 끝

자.. 이걸 어떨게 프로그램으로 구현 한다..?


필요한건 저 프로그램과 Hex 에 대한 지식 약간과 tga 파일 구조에 관한 앏팍한 지식만 있으면 끝

 

셜명은 이미지 참조 ㄳ

 

아참 이미지에 설명을 안적어 놨는데

 

 

파랑색 : 절대 지워져선 안되는 귀중한 이미지 데이터 부분

만약 1바이트라도 실수로 지우면

색이 반전된다거나 , 이미지가 1픽셀식 이동한다거나

같은 이상한 이미지만을 추출하게 될것이야

 

 

노랑색  : 추출할 이미지 크기임(2바*2이트) ,

예) 가로 크기(2바이트) 0F 00 , 세로크기(2바이트) 0D 00

 

 

하늘색 : 추출할 이미지가 위치할 좌표(2*2바이트) ,

예 ) 가로 좌표(2바이트) B1 00 [ 0xB1 = 177 ] , 세로 좌표(2바이트) 92 00 [0x92 = 146 ]

 

지금 수정하고 있는 파일이 st_kei01a10.ani 이니까 st_kei01a10.png 에서의 위치임

 

 

붉은색,분홍색 : 게임상에서의 정보인듯 무시하자 , 그냥 다 0x00 으로 만들어 버리고

데이터의 맨 앞부분만 tga 정보로 바꾸자[첨부이미지의 오른쪽처럼]

 

 

tga 구조 : 맨 앞의 18바이트가 tga의 형식 파일

다른건 다 필요 없고[00으로 만들어 버리고]

 

0x02 -> 02 00

0x0C -> 추출할 이미지의 가로크기 , 예) 위에서 구한 B1 00 [ 0xB1 = 177 ]

0x0E -> 추출할 이미지의 가로크기*2~4  , 예) 계산하기 귀찬으면 닥치고 00 01

0x10 -> 20 08

 

이것만 적어주고 tga 확장자로 저장하면 일단 이미지 추출.

 

여기서 한가지 더 작업 할게 있는데

흰색 부분이 있고 [이건 별수없음]

추출한 파일마다 좌우 대칭이거나

회전 한다거나 되어있기때문에

이미지 편집프로그램으로 반드시 수정해줘야함.

 

 

 

 

 

이정도로 해줬는데 누구 이미지 변환 프로그램 만들사람 없수? ㅜㅜ

난 프로그램 만들줄 모른단 말이야!! ㅜㅜ


'만드는 이야기 > GIF 이야기' 카테고리의 다른 글

공모용 ef miyako  (0) 2013.11.28
공모용 ef kei  (0) 2013.11.28
ㅅㄷㄴㅅ  (0) 2013.11.15
네임콘 네임택  (0) 2012.12.05
치비  (0) 2012.08.05