 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 29.05.2013, 11:36 Titel: S/W Pixel in Byte zusammenfassen. |
|
|
Hallo, guten Tag.
Wie kann man Pixel zu einem Byte zusammenfassen und das versetzt nach unten immer um 8 Zeilen.
Ich habe ein S/W-Screen 256x256 Pixel (32 Byte x 256 Zeilen). Acht Pixel möchte ich immer in 1 Byte umwandeln. Das Problem ist die Zeilen kommen nicht sofort untereinander sondern erst kommen die ersten 32 Byte , dann kommt 8 Byte tiefer die nächste Zeile. Wenn es unten ankommt, geht es obern wieder mit der 2. Zeile weiter und auch wieder 8 Byte tiefer usw.
Die Bytes werden aber so hintereinander gelegt, wie sie oben gelesen werden.
Irgendwie komme ich jetzt mit der Mathematik nicht so klar , wer kann da bitte mal weiterhelfen ?
Danke.
Gruss
peter |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 29.05.2013, 14:24 Titel: |
|
|
Najja ... wenn ich dich richtig verstanden habe, ist das ein Bild, bestehend aus:
Breite: 256 Pixel
Höhe: 256 Pixel
Breite = 32 Byte a 32 * 8 Bit bzw. 256 Bit
Höhe = 32 Byte * 256 Zeilen
Sprich, jedes BIT entspricht einem Pixel.
Und, du willst jetzt dieses Bild in ein ByteArray umwandeln?
Wenn ja, dann erzeuge ein Array mit der dimension:
Code: | Dim Array(1 to 256, 1 to 256) as UByte |
und durchlaufe zeilenweise deine Daten udn setze entsprechend die Bits
Code: |
Dim Daten as String = "HIER DIE DATEN DER 32 BYTES!!!!"
Dim Offset as Integer
For Y as UInteger = 1 to 256 'Alle zeilen durchgehen
For X as UInteger = 0 to 31 'alle Bytes der zeile durchlaufen
For Z as UInteger = 0 to 7 'alle bits pro byte
Array(X * 8 + Z + 1 , Y) = IIf(Daten[x] and (2 ^ Z) = 0, 0, 1) 'array anwählen, Daten maskieren und prüfen ob entsprechendes Bit gesetzt, wenn nein 0, wenn ja 1
next
Next
Next
|
EDIT: Das von dir beschriebene klint nach "Interlaced" ... das ist ein 2 Halbbilder = 1 Gesammtbild verfahren.
Hier musst du eigentlichnur entsprechend beim einlesen so verfahren, das du immer *2 bei der zeile rechnest, udn anschliessend, nach der hälste, ebenfalls *2 -1 um im array die andere seitenhälfte zu erhalten.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 30.05.2013, 15:23 Titel: |
|
|
Jup, danke.
Es geht jetzt.
Gruss
peter |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|