[ typedef @ 31.05.2006. 18:00 ] @
Pishem neki ispitni projekat u C-u koji treba da obradjuje Uncompressed 24b BMP slike. Otprilike funkcionishe ovako: BMP datoteku uchitavam u matricu i vrshim transformacije nad njom radi postizanja zeljene izmene nad slikom. I na kraju sve iz RAM-a snimim na HDD. Izmene su rotiranje, flip, darker, lighter, kontrast, blend, edge detection... trte-mrte... PROBLEM: BMP datoteka se sastoji iz FILE HEADERA, INFO HEADERA, PALETE i "SLIKE" - niza od B,G,R bajtova. Prochitam fajl heder, info heder, paletu, dodjem do slike i eto problema! Konkretno, ucitam sliku 10x10 pixela u kojoj je svaki pixel crven (0, 0, 255). Pronadjem u info hederu da mi je slika 10x10, iterativno krenem da chitam pixele: typedef unsigned char byte; typedef struct { byte b; /* PLAVA */ byte g; /* ZELENA */ byte r; /* CRVENA */ }PIXEL; PIXEL pix; *** fread(&pix, sizeof(pix), 1, slika); *** printf("%4d,%4d,%4d ", pix.b, pix.g, pix.r); Prochitam ja od 1 do 10 pixela kako treba u prvom redu (tachnije u poslednjem jer je u BMP datoteci slika naopachke) i dobijem prikaz: 0, 0, 255 0, 0, 255 0, 0, 255 0, 0, 255 ... 0, 0, 255 Zatim predjem na drugi red i pojave mi se dve nule!?!?! 0, 0, 255 0, 0, 255 0, 0, 255 0, 0, 255 ... 0, 0, 255 0 0 I onda opet 10 crvenih pixela iz sledeceg reda i tako sve... KAO DA IMA DVE KOLONE NULTIH PIXELA VISHKA A DA TO NIGDE NE MOGU DA NADJEM U DOKUMENTACIJI!!! Sve radi kako treba kad preskocim ta dva pixela sa: fseek(f, 2 ,SEEK_CUR); -( 2 da preskochim ta dva vishka pixela!) Probao sam i sa vecim i manjim slikama i svim zivim i uvek moram da preskocim 2 pixela za prelazak u novi red. ZNA LI NEKO ZBOG CHEGA??!?!!! |