source: svn/trunk/zas_dstar/build/bmpbin2src/bin2src.c @ 2

Last change on this file since 2 was 2, checked in by jglee, 11 years ago

first commit

File size: 1.8 KB
RevLine 
[2]1#include "zlib.h"
2#include "string.h"
3#include "stdlib.h"
4
5#include <stdio.h>
6#include <stdlib.h>
7
8int main(int argc, char *argv[])
9{
10        FILE *fp = fopen(argv[1], "rb");
11        if (argc != 2 || fp==0)
12        {
13                fprintf(stderr, "%s [filename]\n", argv[0]);
14                return -1; // ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
15        }
16        // ÆÄÀÏ »çÀÌÁ ±¸ÇÑ´Ù.
17        fseek (fp , 0 , SEEK_END);
18        long lSize = ftell (fp);
19        rewind (fp);
20        // ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© Åë°·Î º¹»çÇÑ´Ù.
21        int nMode = 0; // ¾ÐÃà¾ÈµÈ ¸ðµå
22        int nBuffSize = lSize+5; // Çì´õ(1) + ÆÄÀÏ »çÀÌÁî(4)
23        unsigned char *buff = (unsigned char*)malloc(nBuffSize);
24        buff[0] = 0;
25        buff[1] = lSize / (256*256*256);
26        buff[2] = lSize / (256*256);
27        buff[3] = lSize / (256);
28        buff[4] = lSize % (256);
29        fread (&buff[5], 1, lSize, fp);
30        fclose(fp);
31       
32        // ¾ÐÃà ¹öÆÛ Áغñ
33        if (lSize > 20*1000000) // 20¹ÙÀÌÆ®º¸´Ù´Â ÆÄÀÏ »çÀÌÁî°¡ Å« °æ¿ì¿¡ ¼öÇà
34        {
35                long compressed_Size = lSize-9;
36                unsigned char *compressed_buff = (unsigned char*)malloc(compressed_Size);
37                if (compress(compressed_buff, &compressed_Size, &buff[5], lSize) == 0) // ¾ÐÃ༺°ø
38                {
39                        nBuffSize = compressed_Size + 9;
40                        buff[0] = nMode = 1;
41                        buff[5] = compressed_Size / (256*256*256);
42                        buff[6] = compressed_Size / (256*256);
43                        buff[7] = compressed_Size / (256);
44                        buff[8] = compressed_Size % (256);
45                        memcpy(&buff[9], compressed_buff, compressed_Size);
46                }
47                free(compressed_buff);
48        }
49        // ¹è¿­ À̸§À» °áÁ¤ÇÑ´Ù.
50        int nNameStart = 0;
51        int i = 0;
52        int nStrLen = (int)strlen(argv[1]);
53        for (i = 0 ; i < nStrLen; i++)
54        {
55                if (argv[1][i] == '/') nNameStart =i+1;
56                if (argv[1][i] == '.') argv[1][i] = 0;
57        }
58        printf("unsigned char %s[%d] = {", &argv[1][nNameStart], nBuffSize);
59        // À̹ÌÁö ¹è¿­À» Àû´Â´Ù.
60        for (i = 0; i < nBuffSize; i++)
61        {
62                if (i%8 == 0) printf("\n\t");
63                printf("0x%02X, ",buff[i]);
64        }
65        // À̹ÌÁö ¹è¿­ ´Ý±â
66  printf("\n};\n");
67  free(buff);
68  return 0;
69}
Note: See TracBrowser for help on using the repository browser.