c언어 질문 ..
으흠 ... 제가 bin의 특정 번호의 이미지를 새로운 이미지파일로 교체합니다. 이렇게 할려고하는데 ..
하는방법좀 알려주세요 ..
일단 .. 소스는 만들었는데 ..ㅠ어떤분이 만들어주셨어용 .ㅠ 그런데 어떻게 하는지 몰라서 ㅠㅠ소스 올려여 ..
/*
bin의 특정 번호의 이미지를 새로운 이미지파일로 교체합니다.
*/
#include
#include
#include
#include
typedef unsigned char BYTE;
const BYTE PNGHEAD[4] = {0x89,'P','N','G'};
void exchangePNG(const char *oldFile, const char *newFile, char *pngFile, unsigned no)
{
FILE *oldFP,*newFP, *pngFP;
char buf[10];
int ch;
int n;
int cnt=0;
oldFP = fopen(oldFile,"rb");
newFP = fopen(newFile,"wb");
pngFP = fopen(pngFile,"rb");
// 헤더 복사 + 교체할 이미지 앞까지 복사
n = 0;
while( (ch = getc(oldFP)) != EOF )
{
if(ch == PNGHEAD[n]) // PNG의 헤더인지 검사
{
buf[n++] = ch;
if(n == 4) { // PNG부분 확인
cnt++;
if(cnt < no) { // 교체할 부분 이전
fwrite(buf,1,n,newFP);
}
else { // 교체할 부분 발견
break;
}
n = 0;
}
}
else {
if(0 < n) { // 기존 일치했던 부분 복사
fwrite(buf,1,n,newFP);
n = 0;
}
fputc(ch,newFP); // 데이터 복사
}
}
// 이미지 교체
while( (ch = getc(pngFP)) != EOF )
{
putc(ch,newFP);
}
// 교체할 이미지 스킵
n = 0;
while( (ch = getc(oldFP)) != EOF )
{
if(ch == PNGHEAD[n]) // PNG의 헤더인지 검사
{
buf[n++] = ch;
if(n == 4) { // PNG부분 확인
fwrite(buf,1,n,newFP);
break;
}
}
else {
if(0 < n) { // 기존 일치했던 부분 스킵
n = 0;
}
}
}
// 나머지 복사
while( (ch = getc(oldFP)) != EOF )
{
putc(ch,newFP);
}
fclose(pngFP);
fclose(newFP);
fclose(oldFP);
}
/*
exchange <읽을파일> <저장할파일> <이미지파일> <교체할번호>
*/
int main(int argv, char *argc[])
{
char *oldFile = "ResData320x240.bin";
char *newFile = "out.bin";
char *pngFile = "A_Delete_Md_N.png";
int no;
switch(argv)
{
case 5: no = atoi(argc[4]);
case 4: pngFile = argc[3];
case 3: newFile = argc[2];
case 2: oldFile = argc[1];
}
exchangePNG(oldFile, newFile, pngFile, no);
}
이렇게 소스를 올려주셨어용 ...
그런데 ..방법은 안알려 주셔서 ..ㅠ 음 ..교체할 번호를 어디다 써넣어야하나요 .ㅠㅠ 거히 컴맹 수준이라
자세히좀 알려주세요 ..강좌하듯이 일단 같은 폴더에 넣어라 .. 이런식으루요 ㅠ 부탁좀 드릴께요
컴파일은 하셨나요?
컴파일은 하셨나요? 컴파일 한 후에 이렇게 실행하라는 것 같네요.
exchange <읽을파일> <저장할파일> <이미지파일> <교체할번호>
그리고 원작자에게 물어보시면 되는거 아닌가요? 왜 KLDP에서 그러시는지;;
댓글 달기