-
1. Data: 2012-03-06 16:24:20
Temat: Konwersja obrazka do tablicy znaków
Od: Viki <V...@g...pl>
Witam.
Mam przykładowy program wyświetlający bitmapę na wyświetlaczu siemens S60.
Obrazka nie posiadam, mam tylko jego zrzut do tablicy znaków.
Wygląda to tak:
prog_uint16_t color_logo[] = {
// Image width: 50px, Height: 50px
// Image size: 5000 bytes (Width x Height x 2(word=2bytes))
0xFFD9, 0xFFFB, 0xFFFD, 0xFFFF, 0xF7FF, 0xEFDF, 0xF7FF, 0xF7FF,
0xF7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFDF,
0xFFFE, 0xFFDD, 0xFFBC, 0xFF9C, 0xFFBC, 0xFFBC, 0xFFBC, 0xFFBC,
0xFF5B, 0xFF7B, 0xFF5A, 0xFF7B, 0xFFBC, 0xFF9C, 0xFF7B, 0xFFFC,
0xFFFB, 0xFFFA, 0xFFDB, 0xFFBB, 0xFFBC, 0xFFFE, 0xFFFF, 0xFFFF,
0xFFFF, 0xF7FF, 0xF7FF, 0xF7FF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF,
*
*
*
*
};
Na wyświetlaczu pojawia się przykładowy obrazek.
No i próbuję wydedukować jak przejść z obrazka na taki zapis.
Jeśli dobrze rozumiem z opisu tablicy obrazek ma rozdzielczość 50x50
pikseli.
Przeliczyłem ilość elementów w tablicy i wyszło mi 2496 elementów.
Skąd więc zapis:
// Image size: 5000 bytes (Width x Height x 2(word=2bytes)) ??
Próbowałem programem "Image converter" zrobić zrzut obrazka 50x50 pix
i otrzymywałem zapis:
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
czyli element w tablicy ma 8 a nie 16 bitów jak w przykładzie.
Wszystkie próby zakończyły się wyświetleniem krzaków.
Jak należy przygotować obrazek, ile bitów na kolor? i jak to potem
przekonwertować?
Proszę o jakieś sugestie.
Pozdrawiam.
-
2. Data: 2012-03-06 17:41:29
Temat: Re: Konwersja obrazka do tablicy znaków
Od: MKi <e...@t...op.pl>
W dniu 2012-03-06 17:24, Viki pisze:
> Witam.
>
> Mam przykładowy program wyświetlający bitmapę na wyświetlaczu siemens S60.
> Obrazka nie posiadam, mam tylko jego zrzut do tablicy znaków.
>
> Wygląda to tak:
>
> prog_uint16_t color_logo[] = {
> // Image width: 50px, Height: 50px
> // Image size: 5000 bytes (Width x Height x 2(word=2bytes))
> 0xFFD9, 0xFFFB, 0xFFFD, 0xFFFF, 0xF7FF, 0xEFDF, 0xF7FF, 0xF7FF,
[...]
> Na wyświetlaczu pojawia się przykładowy obrazek.
> No i próbuję wydedukować jak przejść z obrazka na taki zapis.
> Jeśli dobrze rozumiem z opisu tablicy obrazek ma rozdzielczość 50x50
> pikseli.
> Przeliczyłem ilość elementów w tablicy i wyszło mi 2496 elementów.
> Skąd więc zapis:
> // Image size: 5000 bytes (Width x Height x 2(word=2bytes)) ??
50 razy 50 to 2500 pikseli. Czyli tablica powinna mieć 2500 pozycji.
Nie pomyliłeś się o 4? A może autor tablicy zaniedbał 4 pikseli -
to by były śmieci w rogu (prawym dolnym zapewne).
Ewidentnie jest 16 bitów na piksel. To może być kodowanie 565
(czyli 5 bitów czerwonego, 6 bitów zielonego, 5 bitów niebieskiego).
Ale może być dowolne inne...
Ja dla takich celów piszę sobie małe programiki, nie bazuję na
ściągnięciach z sieci - szybciej mi idzie. Jeśli kodowanie kolorów
jest 565, to w C możesz zastosować makro
#define RGB(r,g,b) (((r) & 0xF8) << 8) | (((g) & 0xFC) << 3) | (((b) &
0xF8) >> 3)
które z 3 liczb 8-bitowych utworzy Ci liczbę szesnastobitową w rzeczonym
kodowaniu.
Pozdrowienia,
MKi
-
3. Data: 2012-03-07 13:29:10
Temat: Re: Konwersja obrazka do tablicy znaków
Od: Sławomir Szczyrba <c...@o...the.night>
Klik-klik-klik... To Viki informuje :
> Wszystkie próby zakończyły się wyświetleniem krzaków.
> Jak należy przygotować obrazek, ile bitów na kolor? i jak to potem
> przekonwertować?
> Proszę o jakieś sugestie.
>
Np. tak:
1) Przygotować obrazek o wymaganej wielkości
2) ffmpeg -i <nazwa obrazka> -f rawvideo -pix_fmt rgb565 output.565
3) dowolnym proramikiem przekonwertować pliczek output.565 na plik include
(wynalazki typu bin2h czy mój ulubiony - reswrap Fox Toolikit)
Najgorsze co Ci grozi, to konieczność sprawdzenia który bajt jest pierwszy
a który drugi...
Sławek
--
________
_/ __/ __/ This is my tagline, there're many like it, but this one is mine.
\__ \__ \___________________________________________________
____________
/___/___/ Sławomir Szczyrba steev/AT/hot\dot\pl
-
4. Data: 2012-03-07 16:42:34
Temat: Re: Konwersja obrazka do tablicy znaków
Od: "J.F" <j...@p...onet.pl>
Użytkownik "Viki" napisał w wiadomości
>Mam przykładowy program wyświetlający bitmapę na wyświetlaczu siemens
>S60.
>Obrazka nie posiadam, mam tylko jego zrzut do tablicy znaków.
>Wygląda to tak:
>prog_uint16_t color_logo[] = {
>// Image width: 50px, Height: 50px
>// Image size: 5000 bytes (Width x Height x 2(word=2bytes))
> 0xFFD9, 0xFFFB, 0xFFFD, 0xFFFF, 0xF7FF, 0xEFDF, 0xF7FF, 0xF7FF,
>Na wyświetlaczu pojawia się przykładowy obrazek.
>No i próbuję wydedukować jak przejść z obrazka na taki zapis.
>Jeśli dobrze rozumiem z opisu tablicy obrazek ma rozdzielczość 50x50
>pikseli.
I pewnie jak gdzies doczytasz, to ten telefon mial 65536 kolorow,
czyli 2 bajty na piksel.
>Przeliczyłem ilość elementów w tablicy i wyszło mi 2496 elementów.
>Skąd więc zapis:
>// Image size: 5000 bytes (Width x Height x 2(word=2bytes)) ??
Nie pomyliles sie przy liczeniu ? Moze jednak 2500 elementow ?
C ma ta wlasciwosc ze niedopelnione tablice wypelnia zerami - ale
musialaby miec zadeklarowany rozmiar 2500 elementow. Tu nie ma, wiec
nie zachodzi.
Zobacz procedure wyswietlania - moze tam jest 50x50 i brakujace bajty
sa smieciami, a moze to jest rozmiar naprawde np 52x48
>Próbowałem programem "Image converter" zrobić zrzut obrazka 50x50 pix
>i otrzymywałem zapis:
>0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
>czyli element w tablicy ma 8 a nie 16 bitów jak w przykładzie.
bo zrzucales do takiego formatu. Rozne sa.
>Wszystkie próby zakończyły się wyświetleniem krzaków.
>Jak należy przygotować obrazek, ile bitów na kolor? i jak to potem
>przekonwertować?
>Proszę o jakieś sugestie.
1) obejrzyj procedure wyswietlania, pewnie sie sporo dowiesz,
2) jak sie nie dowiesz - poszukaj dokumentacji do wyswietlacza, moze
cos ciekawego napisza.
3) i oczywiscie trzeba napisac program, ktory na podstawie obrazka w
ogolnie stosowanym formacie graficznym wygeneruje tresc w C
J.
-
5. Data: 2012-03-20 21:54:36
Temat: Re: Konwersja obrazka do tablicy znaków
Od: "Roman" <r...@o...eu>
Użytkownik "Viki" <V...@g...pl> napisał w wiadomości
news:jj5dng$ndd$1@inews.gazeta.pl...
> > Jak należy przygotować obrazek, ile bitów na kolor? i jak to potem
> przekonwertować?
>
> Proszę o jakieś sugestie.
poszukaj "LCD Assistant" kolegi Radosława Kwietnia (na jego stronie leży
sporo ciekawych rzeczy).
Pozdrawiam
Roman