Bild in Hex oder Dezimal konvertieren ?

vbspeed

Mitglied
Hallo ich bin neu hier
und brauche dringend hilfe,

Ich bin dankbar für alle: Tipps,Codeschnipsel,Ganzen Routinen,Links zu Homepages
die sowas machen,...

----------------------------------------------
Ich möchte ein Monochromes Bild (Bitmap,Gif,...)
In Dezimal oder Hexadezimal konvertieren und
ausgeben.

Das daraus resultierende Programm sollte dann ungefär so funktionieren:
Ich lade ein monochromes Bild (Schwarz/weiss) z.B. 240x128 in eine Picture box
oder so. Dann soll das Programm in der linken oberen ecke anfangen die
ersten 8 Pixel in der ersten zeile des bildes einzulesen. NAchdem es
dieß getan hat soll es diese pixel in einen binärstring umwandeln. wobei schwarze
pixel eine 1 ergeben und weisse pixel eine 0.
----------
Beispiel:
# = Schwarz
+ = weiss

Erste 8 Pixel des Bildes: ##+#++#+
Konvertiert in den binärstring: 11010010
----------
Dann soll das Programm diesen binärstring in
eine dezimal oder hexadezimale zahl umwandeln und in einer
textbox ausgeben. Am ende einer dezimal oder hex zahl muss immer
ein "," stehen´also so --> 255,213,87,....(A2,FF,...)

Hat das programm die letzten 8 Pixel der ersten bildzeile eingelesen und konvertiert
soll es in die nächste Zeile springen und weiter konvertieren. Dabei soll es
die konvertierten hex oder Dezimal zahlen nicht neben die zahlen von der
ersten bildzeile in die textbox schreiben sonder darunter. und das geht immer so weiter
bis das Programm die letzten 8 Pixel am ende der 128. Bildzeile konvertiert
und in die Textbox geschrieben hat.

Dann soll das programm aufhören.

Im endeffekt sollte eine zeile in der textbox ungefär so aussehen:
Dezimal:
192,0,7,222,7,240,120,120,123,135,248,120,0,0,15,7,131,192,0,0

Hexadezimal:
0xFF,0xFF,0x81,0xFF,0xFF,0x8F,0xFF,0xFC,0x07,0xFF,0xFF,0xFF

---------------------------------

Mfg. VbSpeed
 
Zuletzt bearbeitet:
Im endeffekt sollte eine zeile in der textbox ungefär so aussehen:
Dezimal:
192,0,7,222,7,240,120,120,123,135,248,120,0,0,15,7,131,192,0,0
Mal 'ne Frage: Wenn du nur schwarze und weiße Pixel hast, wie kannst du dann mehr als zwei verschiedene Dezimalwerte bekommen?

Die Pixel deines Bildes kannst du am besten mit der API-Funktion GetPixel auslesen. Link (Ich finde grad kein besseres Tutorial zu der API aber Google hilft da sicher weiter)

Zum Wandeln von Dezimalzahlen in Hexadezimal gibt es hier ein Tutorial: Link
 
@Shakie

Ja das hab ich doch oben schon beschrieben :)

Aber hier nochmal: Das sind immer 8 Pixel
die nebeneinander sind. und die in einen 8 Bit breiten
binärstring umgewandelt werden, und der binärstring
wird dann in hex oder dezimal konvertiert und ausgegeben.

Aber trotzdem danke für deine hlfe.

Die Links sind gut Danke.

Mfg. VbSpeed
 
Mal ne Frage: Monochrome Bilddateien sind auch byteweise codiert (1 Byte ergibt 8 Pixel). Wieso liest Du die Bilddatei nicht einfach byteweise ein (und überspringst dabei den Header) - dann ersparst Du Dir doch den Umweg über getPixel usw.?

Gruß
.
 
@Datic

Hm tja so git kenne ich mich mit VB noch nicht
aus wie mache ich das denn am besten
Gibt's da spezielle routinen für

Mfg. VbSpeed
 
Schau du machst das so: du benutzt wie schon gesagt die GetPixel API und schreibst dann immer 8 Ergebnisse als 1 oder 0 zusammen. Dann suchst du dir mittels Google eine Funktion zum Wandeln von Binärstrings in eine Dezialzahl oder strengst dein Köpfchen an und denkst drüber nach, wie das in der 6. Klasse (da hab ich es zumindestens gelernt) mit dem Binärsystem war. Und dann benutzt du diese Funktionen zum Wandeln in Hex.
Für VB-Anfänger gilt Grundsätzlich: Google ist dein bester Freund.;)
 
@Shakie
Ja ich saß schon gestern dran und habs probiert
aber es wollte und wollte nicht, naja egal ich probiers
weiterhin Danke.
Google ist nicht nur für anfänger der beste Freund :)

Mfg. VbSpeed
 
OK, soweit sogut

Also ich habe es jetzt geschafft die Pixel auszulesen
und in einer Textbox in 8 bit blöcken darzustellen.

Das ganze geht bis jetzt aber nur wenn ich über die einzelnen Pixel
mit der maus drüberfahre (Mouse Move). Wie kann ich das jetzt
machen das es von selber pixel für pixel ausliest und am ende der
Zeile in die nächste zeile springt ? Irgendwie mit X und Y aber wie

Hat jemand nen tipp oder weiß wie sowas geht

Mfg. VbSpeed
 

Neue Beiträge

Zurück