Binärcode in Bild konvertieren?

... komplette Frage anzeigen

8 Antworten

Hallo,

das sollte gehen. Man müsste ein Programm schreiben, dass die binäre Zahlenfolge (z.B. 10010101...) in die schwarz-weiß Information eines spezifischen Dateiformats umwandelt.

Dabei muss ein Dateiheader für ein Dateiformat (jpg, gif, png, bmp ...) erzeugt werden und die Nullen und Einsen in die Pixel des Bildes eingetragen werden. Man muss sich überlegen, wie man die Bild-Dimension anlegt (Pixel-Breite, Pixel-Höhe) und fehlene Pixel entweder mit weiß oder schwarz ergänzen.

Dabeii würde sich das gif oder png-Format mit schwarz-weiß Palette anbieten.

Antwort bewerten Vielen Dank für Deine Bewertung

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?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Pogel
07.05.2016, 00:39

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.

0

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.

Antwort bewerten Vielen Dank für Deine Bewertung

Dies ist durchaus möglich, da dies auch der Weg ist wie normale Bilder gespeichert werden.
Du könntest natürlich ein bereits bestehendes Bildformat nehmen, jedoch empfehle ich dir bei schwarz-weiss Bildern ein eigenes festzulegen.
Wichtige Informationen die im Header (Daten am Anfang der Datei) festgelegt werden müssten wären sowohl Breite als auch Höhe des Bildes.
Danach können einfach die Bytes die das Bild ausmachen folgen. Hierfür würde ich ein Bit pro Pixel verwenden, wobei eine 1 für Schwarz und eine 0 für Weiss steht.

Ich hoffe ich konnte helfen und falls du Probleme bei der Implementierung hast frag gerne nach.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Tobihogh
07.05.2016, 11:16

mit einem Bit kannst du keine Grautöne darstellen. Er möchte glaub monochromes Schwarz Weiß.

0

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

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Pogel
07.05.2016, 17:21

Erstaunlicherweise war genau dies meine Intention, jedoch wollte ich die Gelegenheit nutzen, um nebenbei ein bisschen PHP zu lernen.

Vielen Dank!

1

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).

Antwort bewerten Vielen Dank für Deine Bewertung
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fluffiknuffi2
07.05.2016, 10:30

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

1

Ich habe es endlich geschafft, eine funktionierende PHP zu schreiben.

Ich danke Euch allen vielmals!

Für Interessierte:

<?php
$code = "";
$breite = "359";
$hoehe = "5299";

$bild = imagecreatetruecolor($breite, $hoehe);

for( $i = 0; $i < $breite*$hoehe; $i++ ){
if($code[$i] == 1) {
$schwarz = imagecolorallocate($bild, 0, 0, 0);
$x = $i % $breite;
$y = floor($i / $breite);
imagesetpixel( $bild, $x, $y, $schwarz);
}
if($code[$i] == 0){
$weiss = imagecolorallocate($bild, 255, 255, 255);
$wx = $i % $breite;
$wy = floor($i / $breite);
imagesetpixel( $bild, $wx, $wy, $weiss);
}
};
header('Content-Type: image/png');
imagepng($bild);
?>

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von hypergerd
08.05.2016, 20:16

siehe Optimierung bei meinem Kommentar -> for mit 1 Zeile

0

Was möchtest Du wissen?