tBane Temat założony przez niniejszego użytkownika |
Wczytywanie danych Binarnych - RGBA 32 bity » 2023-01-06 18:09:00 Witam! Pracuje z plikiem graficznym w formacie *.rgba. Poza tym ze jest to format stworzony specjalnie dla CSS, nie znalazlem niczego przydatnego ani dobrej specyfikacji (albo jestem za slaby). Pomyslalem wiec, ze dobrze, by bylo choc wczytaj dane jako czyste RGBA po kolei (w koncu i tak bede musial czytac piksele). Jest to moje pierwsze starcie z binarka. Format zabiera struktury 8 bitowe jak mniewam (4x256), bo gdzies wyczytalem o glebi 32 bity. No wiec probowalem w ten sposob wyjac te dane, aby miec czyste integery. Niestety wyrzuca mi same [0,0,0,0]. Pomozecie ? ifstream file; unsigned int data; unsigned int r, g, b, a;
file.open( filename ); if( file ) { cout << "file open has been success\n"; while( !file.eof() ) { file >> data; r = data >> 24; g =( data << 8 ) >> 24; b =( data << 16 ) >> 24; a =( data << 24 ) >> 24; printf( "[%i,%i,%i,%i]\n", r, g, b, a ); }; } else cout << "file open has been failed\n";
file.close();
|
|
DejaVu |
» 2023-01-06 18:32:21 Ale co chcesz wczytać? jakiś konkretny format pliku czy co? Daj linka do opisu tego 'specjalnego' formatu dla CSS. Przy okazji zamień typ int na typ unsigned int, bo wykonujesz rotacje bitowe. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-01-06 18:40:33 Pisze gre na androida. Potrzebuje przetwarzac pliki graficzne, najpierw chcialem, by to byly PNG, ale mozliwosci mojego kompilatora (tworze na smartphonie), dalekie sa od tego, bym to zrobil zarowno jak i moj poziom wiedzy. Szukalem wiec bezstratnych formatow graficznych ale nawet BMP byl zbyt przerazajacy :D Udalo mi sie znalezc format ppm ( tylko RGB z biblioteki netpbm), ale on nie obsluguje kanalu alfa. Wiec... udalo mi sie znalezc Konwerter na *.rgba ze strony https://convertio.co/pl/(trzeba wybrac plik, potem konwertuj na obrazy->rgba :D ) Mysle ze to czysty zapis rgba, po 8 bitow, piksel po pikselu.. Probowalem wyjac po kolei wartosci skladowe piksela. Juz zmienilem na unsigned int dla r,g,b,a. Link z wiki: https://en.m.wikipedia.org/wiki/RGBA_color_model(ps. nie mysleliscie o wprowadzeniu motywow graficznych dla strony a przynajmniej dark theme na standardowym dark grey? cos jak w visual studio - przyjemniej korzystalo, by sie z forum. nawet na reklamach moglibyscie sporo zarobic) |
|
DejaVu |
» 2023-01-06 20:18:56 Użyj biblioteki SFML. Tam jest dostępna biblioteka do wczytywania obrazków PNG. Jeżeli biblioteka jest dla Ciebie za duża i nie wiesz jak skompilować to weź ściągnij i skompiluj sobie bibliotekę libPng (wymaga również biblioteki libZlib). |
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-01-06 20:30:19 To nie jest odpowiedz na moje pytanie. Wciaz nie wiem jak wczytac binarnie pilk. Gdybym tylko mogl wczytac te dane, przerzucilbym je do tekstury i juz mialbym wszystko zrobione. A tak z kolei znow bede musial wrzucic kolejny post jak konwerterowac PNG na teksture.
Prosze jednak, aby w miare mozliwosci mi pomoc. Wystarczy, ze wczytam te inty, wlasnie po to zalozylem ten temat. |
|
DejaVu |
» 2023-01-06 20:41:55 https://cpp0x.pl/forum/temat/?id=22058ifstream plik( "test.bin", ios::in | ios::binary ); unsigned char r; unsigned char g; unsigned char b; unsigned char a; while( plik.get( r ) && plik.get( g ) && plik.get( b ) && plik.get( a ) ) { }
|
|
tBane Temat założony przez niniejszego użytkownika |
» 2023-01-06 21:05:16 uzylem Twojego kodu hmm.. i wywala mi przy funkcji get(). Wczesniej dolaczylem biblioteki: #include <iostream> #include <fstream>
Jest jakas alternatywna funkcja do get()? |
|
DejaVu |
» 2023-01-06 21:07:53 |
|
« 1 » 2 |