Wgranie monochromatycznego pliku BMP do macierzy
Ostatnio zmodyfikowano 2014-09-03 17:35
azael Temat założony przez niniejszego użytkownika |
Wgranie monochromatycznego pliku BMP do macierzy » 2014-09-02 20:35:24 Witajcie! Mam problem z wgraniem pliku BMP do macierzy. Chciałbym, żeby narysowany w Paincie np kwadrat można było wgrać do tablicy z uwzględnieniem 0- białe, 1 - czarne, czyli np wynikowa tablica mogłaby wyglądać np: 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 czego mógłbym użyć dalej do rozpoznawania kształtu etc. Szukając pomocy wczesniej w internecie znalazłem funkcję (?) o nazwie BITMAPINFO w Windows.h, jednak jej użycie dla mnie jest zagadkowe. Próbowałem także coś sam zrobić: void MyFunc() { FILE * ImageFile; BITMAPINFO bmih; if(( ImageFile = fopen( "kw.bmp", "rb" ) ) == NULL ) { MessageBox( NULL, "Nie moge otworzyc pliku", "Error", MB_OK ); return; } int * tab[ Wym ]; fread( & bmfh, sizeof( BITMAPFILEHEADER ), 1, ImageFile ); fread( & bmih, sizeof( BITMAPINFO ), 1, ImageFile ); for( int i = 0; i < Wym * Wym; i++ ) fread( tab[ i ], Wym, 1, ImageFile ); fclose( ImageFile ); return 0; }
Jednak jak domyślacie się, to nie działa :( może ktoś wspomóc? :) |
|
DejaVu |
» 2014-09-03 13:55:44 Użyj sobie biblioteki SFML, wczytaj sf::Image i później go przetwarzaj. Zabawa w 'interpretacje' budowy pliku jest czasochłonna, a korzystając z SFML-a załatwisz sobie z automatu obsługę plików takich jak np. jpg czy png, których i tak samodzielnie byś nie był w stanie zaimplementować. |
|
pekfos |
» 2014-09-03 14:12:31 Nie przesadzajmy ;) Jeśli chce się ograniczyć do bitmap, to może je sobie sam oprogramować, akurat format pliku jest banalny. fread( tab[ i ], Wym, 1, ImageFile );
|
To woła o pomstę do nieba..! Niezainicjalizowane wskaźniki użyte jako bufor, zły rozmiar/typ i prawdopodobnie rozmiar tablicy nie jest wyrażeniem stałym. |
|
Moorfox |
» 2014-09-03 17:35:55 Mówisz mu o o pisaniu "czytnika" bitmap, a on zarzuca takim zdaniem: "w internecie znalazłem funkcję (?) o nazwie BITMAPINFO w Windows.h" http://msdn.microsoft.com/en-us/library/windows/desktop/dd183375%28v=vs.85%29.aspx Krótkie wyjaśnienie otwierasz bitmape w notatniku i pojawiają ci się takie znaczki opisujące bitmape między innymi znajduje się tam taki ciąg o nazwie BITMAPINFO które zawiera dokładnie te same dane co twoja "funkcja"(czyt. struktura) Chodzi o to żeby odczytać bitmape i przerzucić sobie odpowiednie rzeczy do struktury a dzięki takiemu upakowaniu danych możesz po prostu przerzucić pamięć odczytanego fragmentu bitmapinfo z pliku do twojej "funkcji" |
|
« 1 » |