|
대부분은 그림화일은 헤더와 데이터 부분으로 되어 있습니다.
일단 먼저 헤더를 만든다면..
struct my_hearder{
char info[10]; //그냥 이파일이 어떤포멧인가 정도를 알려주는 역활입니다.
int image_count; //님의 경우에는 30*30 이 고정이라고 생각되므로 필요한정보는 조각 그림의 갯수입니다.
//int width; 만약 조각 그림이 30*30 인 경우도 있고 아닌 경우도 있다면 이런류의 정보를 추가해야 겠죠?
//int height;
//int bit_info; 이런것도 필요할겁니다..사이즈 계산 하려면요..지금은 30*30*2 이지만.
//기타 필요한 정보를 헤더에 넣습니다.
};
그리고 데이터가 필요한데...
님이 dword colorTempArray[30][30] 를 만들어 놓았다니 그걸 사용하면 됩니다.
열개가 필요하니 대충 dword colorTempArray[10][30][30] 이런 식으로 가공해 주시고요.
이제 만들고 불러오죠.
void make_pic()
{
struct my_hearder hd;
memcpy(hd.info,"my pic");
hd.image_count=10;
//헤더 만들기 완료
화일을 생성합니다.(알아서 생성하시고요..전 옛날 도스함수로 생각나는데로 써볼께요)
FILE*fp=fopen("test.pic","w+b");
fwrite(&hd,sizeof(struct my_hearder),1,fp);//헤더를 저장.
for(int i=0;i<hd.image_count;i++){
fwrite(colorTempArray[i],sizeof(colorTempArray[i]),1,fp);//데이터를 저장.
}
fclodr(fp);
}
void load_pic()
{
struct my_hearder hd;
화일을 엽니다.화일입출력은 알아서 하십시요..
FILE*fp=fopen("test.pic","r+b");
fread(&hd,sizeof(struct my_hearder),1,fp);//헤더를 불러옵니다..
if(memncmp(hd.info,"my pic",6)==0){ //헤더정보를 확인 합니다.이럴려고 넣은거니까..
}
데이더를 읽어드립니다.
for(int i=0;i<hd.image_count;i++){
fread(colorTempArray[i],sizeof(colorTempArray[i]),1,fp);//데이터를 읽어옴.
}
fclodr(fp);
}
대충 이런 형태로 하면 될거같아 적어봤습니다...
온라인으로 막 적은거라 컴파일 함수형태 다 오류 있으겁니다.
이러한 모양으로 구성된다는것만 참고 하십시요..
구리구리 님이 쓰신 글 :
: 조그만 그림 예를 들면 30*30 정도의 그림들이 10개정도 있다고 하면
:
: 앞에 헤더 넣고 이것들을 쭉 이어서 붙여서 새로운 포맷이나 bmp형식으로 저장을 하려고 하는데요
:
:
:
: 그림을 하나를 그냥 dword colorTempArray[30][30]에 각각의 픽셀값을 넣는건 했는데요
:
: 이 그러면 일일이 크기에 맞춰서 변수를 만들어 줘야하는데 10개를 붙이면
:
: dword colorSaveArray[30][300]의 식으로 만들어야 하는데
:
:
:
: dword colorSaveArray[height][width] 이런식으로 생성을 할순 없는걸로 아는데요
:
: 어떻게 해야하는지 알려주세요
:
:
:
: 비트맵에서는 그냥 하나의 변수 같은곳에 픽셀데이터가 쭉 있다고 하던데요 잘 이해가 안되네요
:
: 다른 방법이 있으면 알려주시면 감사하고요
:
|