Binärcode in Bild konvertieren?
Gibt es Möglichkeiten, eine binäre Zahlenfolge (wie 10010101) in ein monochromes schwarz-weiß Bild umzuwandeln?
8 Antworten
Ich habe gerade die andere Frage beantwortet und vermutlich meinst Du das SELBE SETI...
Da reicht ein Texteditor und die richtige Formatierung:
http://www.lamprechts.de/Bilder/SETI8_16.png
und verkleinert besser als Bild zu erkennen:
lamprechts.de/Bilder/SETI8_256klein.png

Hallo Pogel, Dein Code ist noch umständlich:
a) die Farbe muss nicht zig mal Speicher beanspruchen (also raus aus Schleife)
b) statt mehrere if -> besser mit Array:
$breite = intval(359);$hoehe = intval(754);
$bh=$breite*$hoehe;
$bild = imagecreatetruecolor($breite, $hoehe);
$farbe[0] = imagecolorallocate($bild, 255, 255, 255);
$farbe[1] = imagecolorallocate($bild, 0, 0, 0);
for( $i = intval(0); $i < $bh; $i++ ) imagesetpixel( $bild, $i % $breite, (int)($i/$breite), $farbe[intval($code[$i])]);
Nicht 1 sondern unendlich viele Algorithmen sind denkbar!
Nehmen wir Pi im Binärformat:
=11.00100100001111110110101010001000100001011010001100001000110100110001001100011001100010100010111000000011011100000111001101....
Unter
http://www.lamprechts.de/gerd/Pi_Nachkommastellen_Bilder_visualisiert.html
findet man zig mögliche Algorithmen! Natürlich kann jedes dieser Bilder nachträglich in Schwarz-Weiß oder Graustufen konvertiert werden...
Was genau ist Dein Ziel? Oder suchst Du nur den primitivste aller Wege?
Dann schau Dir "Weitere 13 Nullen ab 3186699200000 " das Bild an.
Einfach ein gleichgroßes SW-Bild im BMP-Format (unkomprimiert) nehmen und die Bytes austauschen (ohne Header zu verändern).
Ja, das geht, musst nur entscheiden ob 1 schwarz oder weiss sein soll und welches format das Bild haben soll (quadratisch/...). Und programmieren solltest du können.. Sprache?
Bin gerade ein Neuling im Programmieren. PHP wäre für mich am gelegensten, aber da möchte ich mal nicht wählerisch sein.
Die 1 soll schwarz sein und das gewünschte Format ist 359x5299.
Ich habe bereits versucht mit Photoshop ein bmp zu batchen, hat aber nicht geklappt.
Ich habs versucht, aber meine Programmierfähigkeiten sind da dann doch ein wenig eingeschränkt. Wie definiere ich die Koordinaten, die schwarz sein sollen?
Du hast einen String mit den Nullen und Einsen, den durchläufst du bpsw. mit einer for-Schleife. Außerdem hast du eine Variable x und eine Variable y, beide zunächst mit 0. Und dann zählst du x bei jeder Iteration 1 hoch bis es gleich der gewünschten Bildbreite ist. Ist das der Fall setzt du es auf 0 und erhöhst y um eins. Nun malst du mit dem Grafikbefehl deiner Wahl einen Pixel in das Bild an Position x / y und sagst halt einfach:
if ($NullenUndEinsen[$i] == 1) $farbe = 'black'; else $farbe = 'white';
Oder so ähnlich jenachdem was dein Pixelmalbefehl als Farbwerte akzeptiert. Vielleicht auch Hex-Werte, dann halt '#000000' bzw '#FFFFFF'.
Habe mal versucht etwas für ein Beispiel zu schreiben, komme aber nicht mehr weiter. Könntest du meine Programmierkünste kritisieren/bewerten?
$code = "1111100110011111"
$x = "4"
$y = "4"
$bild = imagecreatetruecolor($x, $y)
for( $i = 0, $i < 16, $i++){
if($code[$i] == 1) {
$color = imagecolorallocate($bild, 0,0,0)
imagesetpixel( $bild, $i % 4, floor($i / 4), $color)
}
}
Damit sollte es dir gelingen:
https://de.wikipedia.org/wiki/Windows_Bitmap#Dateiformat_.28Version_3.29
Naja ich habe tatsächlich mal in C ein Programm geschrieben das BMPs ausgelesen hat... es ist kein Hexenwerk, aber trivial ist es auch nicht und in Anbetracht der Art wie die Frage gestellt wurde war (schon bevor es bestätigt wurde) klar, dass hier ein Anfänger am Werk ist. Denke der ist damit dann doch eher überfordert. :p
Du legst dir ein paar bytes fest welche für Bildinformationen bestimmt sind (Breite, Höhe...) dann brauchst du pro Pixel 2 Bytes einer gibt an wie groß der Schwarzanteil ist der Andere den Weißanteil. Schon hast du einen neuen Datentyp. Das musst du dann nur noch in einem Programm zurückrechnen und es darstellen.
Erstaunlicherweise war genau dies meine Intention, jedoch wollte ich die Gelegenheit nutzen, um nebenbei ein bisschen PHP zu lernen.
Vielen Dank!