Pixel von Image.Picture lesen | Picture in Canvas

Moino!
Sorry, wenn der Titel nicht sehr aussagekräftig ist.
Ich habe ein kleines Problemchen.

Ich habe ein kleines Programm geschrieben, das aus einem beliebigen Text ein Bild (Bitmap) mit vielen bunten Pixeln erzeugt. Jeder Pixel steht für ein Zeichen. (Übliche Leserichtung: L->R|O->U)

Jetzt bin ich soweit, dass ich im 2. Programm das Bild laden kann. Es wird in einem TImage angezeigt.
Aber ich möchte ja die Farben (RGB-Farbcode) der Pixel lesen können, was ich nicht hinbekomme. (Bei ‚Canvas‘ kein Problem - aber wie so?)
Kann mir jemand helfen? Mir sagen, wie ich aus 'nem geladenem Bitmap im TImage die Farbe eines Pixels lesen kann?

Noch 'nen schönen Abend, Jan Martin

Hallo,

…aus 'nem geladenem Bitmap im TImage die Farbe eines Pixels lesen kann?

na auch über das Canvas-Property, z. B. so:

c := Image.Picture.Bitmap.Canvas.Pixels[x, y];

Gruß und Helau :smile:
Martin

Hallo,

c := Image.Picture.Bitmap.Canvas.Pixels[x, y];

noch einfacher (auch TImage selbst hat eine Canvas, in der nichts anderes als die Canvas des Bildes steht):

c := Image.Canvas.Pixels[x, y];

Gruß, Niels

Hallo.
Erstmal Danke für eure Antworten! :wink:

@ Martin
Deine Methode schien gar nicht schlecht zu sein, mein Delphi zeigt auch kein Fehler an, aber es geht leider doch nicht.

@ Nils
Auch Dir danke, aber das habe ich schon probiert und es geht leider nicht.

Ich habe mein DelhiProjekt mal hochgeladen. Ein BeispielBitmap ist auch dabei. -> martinazzi.bplaced.net/135792468/Pixel.zip

Danke im Vorraus!

Hallo Jan Martin,

s ist ein leerer String.

for i := 1 to 100 do begin
 if image1.canvas.Pixels[p, 1] = rgb(50,0,0) then s[i] := 'a';
 ...

Schon in der ersten Runde tritt der Fehler auf: s[1] ist nicht definiert da nicht vorhanden.

Abhilfe:

 for i := 1 to 100 do begin
 if image1.canvas.Pixels[p, 1] = rgb(50,0,0) then s := s + 'a'
 else if image1.Canvas.Pixels[p, 1] = rgb(100,0,0) then s := s + 'b'
 else s := s + ' ';
 p := p + 1;
 end;

Manfred

Es geht! Es geht! Es geht! :smiley: Sorry, aber ich freue mich. :smile:
Manfred, danke!!!
mfG, Jan Martin