ASCII art
Képnézegetés parancssoron
 Összes Adatszerkezetek Fájl Függvények Változók Típusdefiníciók Enumeráció-értékek Oldal
Adatszerkezetek | Típusdefiníciók | Enumerációk | Függvények | Változók
ascii.c fájlreferencia

bitmap ábrázolása ASCII karakterekkel Részletek...

#include <stdio.h>
#include <stdlib.h>

Ugrás a fájl forráskódjához.

Adatszerkezetek

struct  Pixel
 egyetlen pixel adatait tartlmazó struktúra Részletek...
 
struct  Image
 bitmap képet tároló struktúra típus Részletek...
 

Típusdefiníciók

typedef unsigned char Byte
 egybájtos típus
 

Enumerációk

enum  { MAX_BRIGHT = 36, ASCII_WIDTH = 79, MAX_FNAME = 1000 }
 globális konstansok Részletek...
 

Függvények

Imageimage_read (char *fname)
 kép beolvasása PPM fájlból Részletek...
 
void image_close (Image *image)
 kép bezárása Részletek...
 
Pixel get_pixel (Image *image, int h, int w)
 a kép egy pixele indexek alapján Részletek...
 
Byte pixel_brightness (Pixel p)
 egy pixel fényessége Részletek...
 
void image_to_ascii (Image *image)
 képet ASCII karakterekkel ábrázol
 
int main (void)
 A főprogram.
 

Változók

char ASCII [MAX_BRIGHT]
 az ASCII karakterek tömbje Részletek...
 

Részletes leírás

bitmap ábrázolása ASCII karakterekkel

Definíció a(z) ascii.c fájlban.

Enumerációk dokumentációja

anonymous enum

globális konstansok

Enumeráció-értékek
MAX_BRIGHT 

ennyi különböző fényességérték van

ASCII_WIDTH 

ilyen széles lesz az ASCII kép

MAX_FNAME 

max. ilyen hosszú lehet a fájlnév

Definíció a(z) ascii.c fájl 8. sorában.

8  {
9  MAX_BRIGHT = 36,
10  ASCII_WIDTH = 79,
11  MAX_FNAME = 1000
12 };
ennyi különböző fényességérték van
Definition: ascii.c:9
max. ilyen hosszú lehet a fájlnév
Definition: ascii.c:11
ilyen széles lesz az ASCII kép
Definition: ascii.c:10

Függvények dokumentációja

Pixel get_pixel ( Image image,
int  h,
int  w 
)

a kép egy pixele indexek alapján

Paraméterek
[in]imagemutató a képstruktúrára
[in]ha pixel magasságkoordinátája
[in]wa pixel szélességkoordinátája
Visszatérési érték
a pixel

Definíció a(z) ascii.c fájl 107. sorában.

Hivatkozások Image::pixels és Image::width.

Hivatkozások: image_to_ascii().

108 {
109  int idx = h*image->width+w;
110  return image->pixels[idx];
111 }
unsigned width
a kép szélessége pixelben
Definition: ascii.c:34
Pixel * pixels
a pixelek dinamikus tömbje (sorfolytonos)
Definition: ascii.c:35
void image_close ( Image image)

kép bezárása

Paraméterek
[in]imagemutató a kép struktúrára

Definíció a(z) ascii.c fájl 95. sorában.

Hivatkozások Image::pixels.

Hivatkozások: main().

96 {
97  free(image->pixels);
98  free(image);
99 }
Pixel * pixels
a pixelek dinamikus tömbje (sorfolytonos)
Definition: ascii.c:35
Image* image_read ( char *  fname)

kép beolvasása PPM fájlból

Paraméterek
[in]fnamea PPM fájl neve
Visszatérési érték
pointer az újonnan létrehozott Image struktúrára vagy NULL, ha a beolvasás sikertelen volt

Definíció a(z) ascii.c fájl 42. sorában.

Hivatkozások Image::height, Image::pixels és Image::width.

Hivatkozások: main().

43 {
44  Image *image;
45  FILE *fp;
46  unsigned depth;
47 
48  /* memóriafoglalás a struktúrának */
49  image = (Image *)malloc(sizeof(Image));
50  if (image == NULL) {
51  fprintf(stderr, "Error allocating memory for image\n");
52  return NULL;
53  }
54 
55  fp = fopen(fname, "rb");
56  if (fp == NULL) {
57  fprintf(stderr, "Error opening file %s\n", fname);
58  free(image);
59  return NULL;
60  }
61 
62  /* fejléc beolvasása a fájlból */
63  if (fscanf(fp, "P6\n%u%u%u%*c", &image->width, &image->height, &depth) != 3 || depth != 255u) {
64  fprintf(stderr, "Error reading image\n");
65  free(image);
66  fclose(fp);
67  return NULL;
68  }
69 
70  /* pixeltömb foglalása */
71  image->pixels = (Pixel *)malloc(image->height*image->width*sizeof(Pixel));
72  if (image->pixels == NULL) {
73  fprintf(stderr, "Error allocating memory to image data\n");
74  free(image);
75  fclose(fp);
76  return NULL;
77  }
78 
79  /* pixeladatok beolvasása */
80  if (fread(image->pixels, sizeof(Pixel), image->height*image->width, fp) != image->height*image->width) {
81  fprintf(stderr, "Error reading image data\n");
82  free(image->pixels);
83  free(image);
84  fclose(fp);
85  return NULL;
86  }
87 
88  fclose(fp);
89  return image;
90 }
unsigned width
a kép szélessége pixelben
Definition: ascii.c:34
bitmap képet tároló struktúra típus
Definition: ascii.c:32
unsigned height
a kép magassága pixelben
Definition: ascii.c:33
egyetlen pixel adatait tartlmazó struktúra
Definition: ascii.c:25
Pixel * pixels
a pixelek dinamikus tömbje (sorfolytonos)
Definition: ascii.c:35
Byte pixel_brightness ( Pixel  p)

egy pixel fényessége

Paraméterek
[in]pa pixel
Visszatérési érték
a fényesség értéke

Definíció a(z) ascii.c fájl 117. sorában.

Hivatkozások Pixel::b, Pixel::g és Pixel::r.

Hivatkozások: image_to_ascii().

118 {
119  return (Byte) (p.r/3. + p.g/3. + p.b/3.);
120 }
unsigned char Byte
egybájtos típus
Definition: ascii.c:22
Byte r
a pixel piros színkomponense
Definition: ascii.c:26
Byte b
a pixel kék színkomponense
Definition: ascii.c:28
Byte g
a pixel zöld színkomponense
Definition: ascii.c:27

Változók dokumentációja

char ASCII[MAX_BRIGHT]
Kezdő érték:
= {
' ', '.', '\'', '`', '\'', '-', '^', '\"', '!',
'>', ';', '=', '0', 'i', 'j', 'l', 't', 'c',
'f', 'o', 'a', 'V', '5', 'e', 'b', 'D', 'p',
'g', 'B', 'm', 'H', 'H', 'H', 'M', 'M', '@'
}

az ASCII karakterek tömbje

Definíció a(z) ascii.c fájl 15. sorában.

Hivatkozások: image_to_ascii().