Omvandla en BMP-bild till en array av hex värden till lcd?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Omvandla en BMP-bild till en array av hex värden till lcd?

Inlägg av sneaky »

Har nu spenderat två kvällar med att försöka snoka rätt på ett program (för windows) som kan ta en BMP-bild och göra om den till en array av hex värden (RGB565) som jag kan skicka till en LCD med hjälp av en PIC. Jag var tunnhårig innan jag började och det blev inte bättre nu... Det närmsta jag kommit var programmet HEX Workshop men det blir inte riktigt hundra, jag tror att bmp-headern följer med i exporten.

Formatet jag är ute efter ser ut såhär:

Kod: Markera allt

const unsigned char rawData[13274] = {
    0x81, 0xF7, 0xA1, 0xF7, 0xA1, 0xFF, 0x60, 0xF7, 0xE0, 0xDE, 0x20, 0xCE, 0x28, 0x4A, 0xE7, 0x39, 
    0x85, 0x31, 0x44, 0x29, 0x44, 0x29, 0x64, 
etc etc
Jag hittade även ett program till den klassiska "Nokia-lcdn" som många hobbyister använder men det kunde tyvärr inte spotta ur sig rätt format. Program för monokroma bilder har jag också hittat men jag är ute efter färg.

Det känns som att det borde vara ett ganska enkelt program att skriva men tyvärr är jag inte kapabel att göra det själv.

Hoppas att någon förstår vad jag är ute efter :)
Användarvisningsbild
AndLi
Inlägg: 18257
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av AndLi »

Det finns någon här på forumet som har skrivit ett konverteringstool för att rita bilder till sin pannövervakning. Men den lär vara svart/vit.

Jag kan själv bara rekomendera http://www.fortunecity.com/skyscraper/w ... ffrmt.html och koda lite själv.

Någon dag ska jag lista ut varför de valde att lägga BMP upp och ner i filen. Det måste finnas en logisk förklaring till det, tillsammans med att varje rad alltid måste vara en multiple av 4 bytes lång.. 32bitars CPU lär knappast varit standard när BMP uppfanns..
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av bos »

Jag har ingen aning om vad RGB565 är för djur, men när jag gjort något liknande har jag använt Python och PIL-paketet. PIL har en funktion som heter tostring() som man använda för att på valfritt sätt klippa upp bilddatat till valfri arraystorlek.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46948
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av TomasL »

5 bitar rött, 6 bitar grönt och 5 bitar blått förmodligen, orsaken till att du inte hittat nåt är förmodligen pga att de flesta monokroma displayer följer ungefär samma standard, vilket gör det lätt att fixa en array av det.
Dock, när det gäller färgdisplayer finns ingen så egentlig standard, utan det är hel beroende på vilken display(krets) du har tänkt att använda.

Det är mycket stor skillnad på informationen som skickas till displayen, beroende på vilken upplösning. färgdjup osv som kan avkodas.


Föjlaktligen:
1: Vilken driver-krets, hur är den konfigurerad
2: Du får troligen skriva konverteringsprogrammet själv.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av sneaky »

Displayen jag leker med är denna: Ebay och den har enligt säljaren en Himax HX8347-A-kontroller.

Har pulat lite till och får nu in bilder om än fortfarande lite fel (förskjutna i sidled, småputs bara för att fixa till kan jag tro).

Jag sparar först bilden i photoshop som en BMP med inställningar enligt nedan. Sedan öppnar jag den i Hex Workshop och knipsar bort allt fram till offset 0436h som enligt denna sida utgör headern. Sedan exporterar jag filen och får en array motsvarande den i första inlägget. För att få ut bilden på LCDn så använder jag följande snutt kod:

Kod: Markera allt

address_set(0,0,69,61);
for(i=0;i<3767;i++){
	cld_write_color(rawData[i*2+1],rawData[i*2]);
}
Den snutten skickar ut hög och låg byte av färgen/pixeln på PORTD och PORTB som är kopplade till LCDn tills området har fyllts ut.

Men men, lutar väl åt att jag får lära mig att skriva ett program som gör det. Hade hoppats på en enkel lösning som omväxling heh.

Och ursäkta mina bristande facktermer... svårt att hitta rätt ord när det mesta man läser är på engelska :P
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46948
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av TomasL »

Då får du tanka ned databladet för Displayen (kontrollern) och se hur den vill ha informationen.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av sneaky »

If you want something done right, do it yourself. Eller hur är det de säger åver där ;) Det är ett hemskt ihopplock av kod från diverse sidor blandat med min egen och med hårdkodade värden både här o där, men, det verkar få jobbet gjort så jag klagar inte ;)

Första LCDn jag fått igång av de jag testat, yay!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Laserboy
Inlägg: 113
Blev medlem: 16 juli 2004, 15:07:02
Ort: Lindome

Re: Omvandla en BMP-bild till en array av hex värden till lc

Inlägg av Laserboy »

Jag har för mig att Gimp kan spara direkt till .c eller .h fil som då innehåller en array med data.
Hur det är med RGB565 i Gimp vet jag inte.

/LB
Skriv svar