RTV forum PL | NewsGroups PL

Jak przekształcić obrazek 50x50 px do tablicy znaków w formacie 16-bit dla Siemens S60?

Konwersja obrazka do tablicy znaków

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak przekształcić obrazek 50x50 px do tablicy znaków w formacie 16-bit dla Siemens S60?

Viki
Guest

Tue Mar 06, 2012 5:24 pm   



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.

MKi
Guest

Tue Mar 06, 2012 6:41 pm   



W dniu 2012-03-06 17:24, Viki pisze:
Quote:
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,

[...]

Quote:
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) << Cool | (((g) & 0xFC) << 3) | (((b) &
0xF8) >> 3)

które z 3 liczb 8-bitowych utworzy Ci liczbę szesnastobitową w rzeczonym
kodowaniu.

Pozdrowienia,
MKi

Sławomir Szczyrba
Guest

Wed Mar 07, 2012 2:29 pm   



Klik-klik-klik... To Viki informuje :

Quote:
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

J.F
Guest

Wed Mar 07, 2012 5:42 pm   



Użytkownik "Viki" napisał w wiadomości
Quote:
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.

Quote:
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

Quote:
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.

Quote:
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.

Roman
Guest

Tue Mar 20, 2012 10:54 pm   



Użytkownik "Viki" <Viki@gazeta.pl> napisał w wiadomości
news:jj5dng$ndd$1@inews.gazeta.pl...
Quote:
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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak przekształcić obrazek 50x50 px do tablicy znaków w formacie 16-bit dla Siemens S60?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map