Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

S/W Pixel in Byte zusammenfassen.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 29.05.2013, 11:36    Titel: S/W Pixel in Byte zusammenfassen. Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 29.05.2013, 14:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 30.05.2013, 15:23    Titel: Antworten mit Zitat

Jup, danke.
Es geht jetzt.

Gruss
peter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.05.2013, 16:17    Titel: Antworten mit Zitat

Hier arbeite ich auch mit Schwarz-Weiß-Grafiken, wobei 1 Bit 1 Pixel repräsentiert:
http://www.freebasic-portal.de/code-beispiele/grafik-und-fonts/zahlen-in-kleiner-schriftgroesse-ausgeben-186.html
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz