Memo in Bilddatei speichern
-
Hallo,
habe schon einiges zu Steganografie hier gefunden, aber:
Ich möchte den Inhalt eines Memo-Objektes in eine vorgegebene Bilddatei (bmp z.B.) speichern (und später diese Daten wieder aus der Bilddatei herauslesen können).
Danke für die Hilfe!
-
Hallo
VCL-Controls besitzen eine Paint-Methode um den Inhalt auf ein beliebiges Canvas zu zeichnen. Allerdings genauso wie es auf dem Bildschirm dargestellt wird, mit allen Steuerelementen.
bis bald
akari
-
Ich dachte eher als Lösung an so etwas wie:
1. Bilddatei laden
2. Text des Memofeldes zeichenweise mit den Bildinformationen (LSB o.ä.) verknüpfen/berechnen
3. Bilddatei mit geänderten Bytes wieder speichern.(vgl. http://www.c-plusplus.net/forum/viewtopic-var-t-is-42944-and-highlight-is-stegano%2A.html
Danke!
-
Hallo
Du kannst es natürlich auch manuell umsetzen. Dazu brauchst du nur die Canvas-Methoden wie DrawText.
bis bald
akari
-
akari, er will nicht den Text ins Bild malen, sondern den Text in den Binärdaten verstecken.
teacherwilli, viel Spaß dabei. Hast du dazu auch ne Frage oder willst du uns nur teilhaben lassen?
-
Hallo
Ah okay hab den Stegano-Link nicht beachtet.
@ Topic : Entweder erarbeitest du dir selber eine Implemenatipon (zum Beispiel auf Basis der im Link angegebenen Infos) oder suchst dir eine externe Bibliothek dafpr. Der Builder bietet das für jedenfalls keine direkte Unterstützung.
bis bald
akari
-
Trotzdem Danke!
-
Mittels Bitmap::Canvas->Pixels[x][y] kannst du jedenfalls auf die einzelnen Pixel (vom Typ TColor) zugreifen und dort dann die Bitmanipulationen durchführen.
-
Muss ich dazu eigentlich zuerst ein canvas-Objekt erstellen u. dahinein die Grafikdatei laden? (Habe noch nie etwas mit canvas gemacht, daher die Frage, bevor ich mich in das Thema näher einlese).
-
Nein, du brauchst einfach nur mit TBitmap::LoadFromFile() die Datei laden und kannst dann auf dessen Canvas zugreifen.
Nach Änderung dann einfach wieder TBitmap::SaveToFile() aufrufen.
(Du mußt natürlich eine Instanz vom TBitmap-Objekt mit new erzeugen)
-
Hallo
Nein Canvas-Objekte werden nicht manuell erstellt, sondern gehören immer zu einem anderen besitzendem Objekt. Das kann ein Control sein (TForm zum Beispiel) oder TBitmap. Und letzteres kannst du manuell erzeugen und desen Canvas-Eigenschaft benutzen.
bis bald
akari
-
siehe auch unter
http://www.c-plusplus.net/forum/viewtopic-var-t-is-201426-and-highlight-is-stegano.html