꼭좀 봐주셨으면 합니다 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);
}
이렇게 소스를 올려주셨어용 ...
그런데 ..방법은 안알려 주셔서 ..ㅠ 음 ..교체할 번호를 어디다 써넣어야하나요 .ㅠㅠ 거히 컴맹 수준이라
자세히좀 알려주세요 ..강좌하듯이 일단 같은 폴더에 넣어라 .. 이런식으루요 ㅠ 부탁좀 드릴께요
댓글 달기