13 ' ',
'.',
'\'',
'`',
'\'',
'-',
'^',
'\"',
'!',
14 '>',
';',
'=',
'0',
'i',
'j',
'l',
't',
'c',
'f',
15 'o',
'a',
'V',
'5',
'e',
'b',
'D',
'p',
'g',
'B',
16 'm',
'H',
'H',
'H',
'M',
'M',
'@'
19 typedef unsigned char byte;
23 void image_to_ascii(pixel image[],
int height,
int width,
int ascii_width)
25 int block_w = width/ascii_width;
26 int block_h = block_w * 2;
29 for (h = 0; h < height/block_h; ++h) {
30 for (w = 0; w < ascii_width; ++w) {
32 for (i = 0; i < block_h; ++i) {
33 for (j = 0; j < block_w; ++j) {
34 int pix_h = h*block_h+i;
35 int pix_w = w*block_w+j;
36 b += image[pix_h*width + pix_w];
40 printf(
"%c",
ASCII[b]);
47 int read_bigendian(FILE *fp,
int b)
52 fread(bytes, 1, b, fp);
53 for (i = 0; i < b; ++i)
54 ret = 256 * ret + bytes[i];
59 int read_littleendian(FILE *fp,
int b)
64 fread(bytes, 1, b, fp);
65 for (i = b-1; i >= 0; --i)
66 ret = 256 * ret + bytes[i];
73 pixel *read_image(
char *fname,
int *height,
int *width)
77 FILE *fp = fopen(fname,
"rb");
79 fprintf(stderr,
"Cannot open file %s for binary reading", fname);
82 h = read_littleendian(fp, 2);
83 w = read_littleendian(fp, 2);
84 image = (pixel *)malloc(h * w *
sizeof(pixel));
86 fprintf(stderr,
"Cannot allocate memory for %d x %d pixels\n", h, w);
90 if (fread(image,
sizeof(pixel), h * w, fp) != h * w) {
91 fprintf(stderr,
"Cannot read %d x %d pixels from file %s\n", h, w, fname);
106 int width, height, w_ascii;
110 printf(
"Filename: "); scanf(
"%s", fname);
111 printf(
"ascii width: "); scanf(
"%d", &w_ascii);
113 image = read_image(fname, &height, &width);
char ASCII[MAX_BRIGHT]
az ASCII karakterek tömbje
ennyi különböző fényességérték van
void image_to_ascii(Image *image)
képet ASCII karakterekkel ábrázol
int main(void)
A főprogram.