Autor Beitrag
BlackPixel
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 10.06.11 02:44 
Ja ich bin neu und ja ich hab gleich eine ganz doofe frage.

Wie schaffe ich es ein Bild Pixel für Pixel in seine Farbwerte zu zerlegen diese zu trennen und je in eine TXT Datei auszugehen.
Datei ist mir wichtig das ich anhand dieser Werte das Bild an auch wieder neu erstellen kann aber mir die Möglichkeit gegen ist jeden Pixel für sich Farblich anzupassen.

Nun weiß auch ich nicht genau brauch ich bis auf die RBG-Werte noch andere Infos oder nicht.

Hintergrund ist der das ich zwei Bilder vergleichen will und am Ende mir die Abweichungen der Einzellen Pixel von einander errechnen will.

Sprich Bild1: Pixel 1,1 = R:255 G:0 B:255 und Bild2: Pixel 1,1 = R:255 G:0 B:250
Ergebnis: R:-0 G:-0 B:-5

So das ich wenn ich das ganze Umkehre und anhand dieser Informationen das Bild Pixel für Pixel neu erstellen lasse die Unterschiede weg sind.

mfg BlackPixel

P.S Erschlagt mich bitte nicht gleich ich bin noch Anfänger. :-) Danke
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 10.06.11 10:05 
Hallo und willkommen im Forum,

Wie baust du die Bilder wieder auf? Kannst du hier ein wenig Code zeigen?
So kann man leider nur ins Blaue raten was da schiefgeht.

MfG
Stefan

_________________
Delphi: XE - OS: Windows 7 Professional x64
BlackPixel Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 10.06.11 10:47 
Nun noch ist es ja eher die Überlegung wie ich es am besten mache

Also Bildformat ist schon mal bmp da jpg Probleme machen würde.

Zerlegen wollte ich die Pixel in ihre Farbwerte mit

R := GetRValue(Form1.Color);
G := GetGValue(Form1.Color);
B := GetBValue(Form1.Color);

frage ist ob das reicht oder ob es noch Informationen gibt die relevant sein könnten. Also geladen wir das Bild wohl als TImage. Pixel per Pixel (TCanvas.Pixels) ist zwar langsam aber mit Scanline (TBitmap.ScanLine) komm ich nicht so zurecht muss ich gestehen.

Wichtig an der Sache ist mir eigentlich nur das ich Rot, Grün und Blauwerte jeweils einzeln habe für jeden Pixel damit ich sie unabhängig von einander mit den Werten eines zweiten Bildes vergleichen kann. Dabei und damit ich Differenzen hab wehre es wohl gut sie eben als Integer zu gaben da reich es nachher einfach zu schauen < > =. Schwer zu erklären wenn man selbst noch nicht genau sicher ist wie man das ganze versuchen will.... :-/
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 10.06.11 11:06 
user profile iconBlackPixel hat folgendes geschrieben:
Pixel per Pixel (TCanvas.Pixels) ist zwar langsam aber mit Scanline (TBitmap.ScanLine) komm ich nicht so zurecht muss ich gestehen.


Kann bei z.B. 2000*2000 = 4000000 aber viel ausmachen. Hier im Forum gibt es auch schon viele Threads dazu.


Bei einer Bitmap wüsste ich nicht was auser den RGB werten noch relevant sein kann. Aber 100% sicher bin ich mir da auch nicht.
BlackPixel Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 10.06.11 11:12 
Ja wie gesagt das es mit diesen beiden Methoden geht hab ich hier schon gelesen wobei ich gestehen muss erst danach war wohl doch zu lang wach....aber mir hat das ganze keine ruhe gelassen.

Ich weiß das ich mit Scanline eine ganze Zeile bearbeiten kann aber irgend wie ist mir das nicht recht gelungen vor allem dann jeweils von jedem Pixel alle R werte in eine eigene .txt Datei zu bekommen und alle Grün Werte etc in eine andere. Also immer einen wert unter dem anderen. Nun ja ich werde mich hier mal durch wühlen nun gehts aber erst mal was anderes machen... 46 Stunden am Stück auf den Beinen da kommt nichts mehr zu Stande was sinnvoll ist.



(wobei eigentlich ist doch noch was Sinnvolles bei raus gekommen ich hab mich endlich mal hier angemeldet...)

Edit: Naja und ich stehe vor einem weiteren Rätsel ich hab einen Text als in umgewandelt und in ein Bild geschrieben also R32 G0B0 = etc und das ging auch sehr gut nur :P doof wenn der ganze Text im Klartext in der Datei steht wenn man sie im Editor aufmacht...
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.06.11 12:42 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Bei einer Bitmap wüsste ich nicht was auser den RGB werten noch relevant sein kann. Aber 100% sicher bin ich mir da auch nicht.
Es gibt auch ein viertes Byte, nämlich den Alphakanal, aber der sollte hier wohl nicht relevant sein...

Ja, wenn du die Buchstaben als Werte direkt hinschreibst, stehen die auch da, klar. ;-)

Für steganografisches Verstecken solltest du nur ein Bit pro Pixel unterbringen oder so. ;-)
BlackPixel Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 10.06.11 12:50 
Das schöne ist ich wollte es nicht rein schreiben ich hab an sich nur die Farben der Pixel geändert jeder ASCII Zeichen hab ich dafür einen leicht anderen Farbwert zugeteilt.

Ich muss echt mal schauen wie ich das geschafft hab weil Absicht war es nicht. Verstecken will ich Nichts es ist eher eine Spielerei ich wollt einfach Text auf kleinem Raum in einem Bild unterbringen. Und mich wundert es eben nun das wenn ich es schon irgend wie rein geschrieben hab er das Bild immer noch als bmp normal öffnet was ja sonnst bei minimalen Änderungen schon nicht mehr der Fall ist.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 10.06.11 13:36 
Ich habe mich ja auf eine Bitmap bezogen und da sagt Wikipedia das was ich auch in Erinnerung hatte:
"Alphakanäle, Farbkorrektur und Metadaten werden nicht unterstützt."

Wikipedia sagt aber auch ;) :
"Einige Programme wie etwa Adobe Photoshop interpretieren die verbleibenden 8 Bits (0xFF000000) als Alphakanal mit 256 möglichen Transparenzstufen. Dies ist jedoch von der Spezifikation nicht vorgesehen."


Zuletzt bearbeitet von thepaine91 am Fr 10.06.11 13:39, insgesamt 1-mal bearbeitet
BlackPixel Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 10.06.11 14:04 
Das ist schon mal gut eine Sache weniger die für mich zum Stolperstein werden kann. :-)
Muss offen gestehen ich bin was das angeht ein Bastler. Ich verstehe nicht alles was ich mach, aber ich teste einfach so lang rum bis es irgend wie das macht was ich mir vorstelle da kann es noch so wir sein...

Trial and error sozusagen.