k wil een bitmap inlezen in een 2 dimensionale array
tis een progje dat ik omzet vanuit visual basic naar c
in vb deed ik dit:
dit werkt perfect voor elke groote van de bitmap om in te lezen
dit is wat ik er in c van heb gemaakt
alleen om een of andere rede doet ie t maar bij bepaalde resoluties
bij sommige dan vershuift ie een byte
k snap er aars van
tis een progje dat ik omzet vanuit visual basic naar c
in vb deed ik dit:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| Private Type pixel R As Byte G As Byte B As Byte End Type private sub loadpic Dim dummy As Byte Dim px() as Pixel Open "d:\test.bmp" For Binary As #1 Get #1, 19, breedt Get #1, 23, hoog ReDim px(breedt, hoog) As pixel Get #1, 55, dummy For y = hoog To 1 Step -1 For x = 1 To breedt Get #1, , px(x, y).G Get #1, , px(x, y).R Get #1, , px(x, y).B Next Next Close en sub |
dit werkt perfect voor elke groote van de bitmap om in te lezen
dit is wat ik er in c van heb gemaakt
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| unsigned char ** openfile (char filename[255], unsigned int * width, unsigned int * height) { /************************************************** * loads file 'filename' * * return the width in width, the height in height * * pixelcount = width * height * * the pixel is turned into a gray value * * and put in pixel[x][y] * **************************************************/ FILE *bmpfile; unsigned int i; unsigned char ** loadpixels; unsigned int x, y; bmpfile = fopen ( filename, "rb"); if ( bmpfile ) { fseek ( bmpfile, 18, SEEK_SET); fread ( width, sizeof ( *width), 1, bmpfile); fseek ( bmpfile, 22, SEEK_SET); fread ( height, sizeof ( *height), 1, bmpfile); loadpixels = new unsigned char * [*width]; for (i = 0; i < *width; i++) loadpixels[i] = new unsigned char[*height]; fseek ( bmpfile, 54, SEEK_SET); for ( y = *height; y > 0; y--){ for ( x = 0; x < (*width); x++){ loadpixels[x][y] = (fgetc( bmpfile) + fgetc( bmpfile) + fgetc( bmpfile)) / 3; cout << (int)loadpixels[x][y] << " "; } cout << "\n"; } } else { cout << "File error occured.\n"; } return loadpixels; } |
alleen om een of andere rede doet ie t maar bij bepaalde resoluties
bij sommige dan vershuift ie een byte
[ Voor 4% gewijzigd door Super_ik op 27-08-2003 19:12 ]
8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek