So also. Habe mal etwas versucht. Leider klappt es absolut noch nicht richtig... (Aber immerhin schon ein wenig
)
1.
Wenn ich den folgenden Code so ausführe, listet er mir zwar die Farbe der Pixel aus der 1. Zeile auf. Aber leider krieg ich am Schluss eine Fehlermeldung: Zugriffsverletzung Ntdll.dll.
Weitere Fehlermeldungen erhalte ich merkwürdigerweise wenn ich die Projekt.exe dann schliesse.
Weiss jemand was ich falsch mache?
2.
im Memo werden zuerst alle Farben so aufgeführt: $00F7F7F7
ein paar werden aber plötzlich so aufgeführt: clWhite
Warum denn das?
3.
Hier habe ich nun zum testen nur mit der 1. Zeile gearbeitet. trotzdem geht es relativ lange...(2-3 Sekunden) Ich vermute mal dass es bei einem Bild von 1680x1050 viel zu lange dauern würde alles SO auszulesen und dann noch nach einem gewissen Bereich zu suchen. Was kann man da machen?
Delphi-Quellcode:
var
Bild: TBitmap;
p: PBytearray;
zeile, spalte: integer;
r, g, b: byte;
begin
Bild:=form1.Image1.Picture.Bitmap;
//pf32 oder 24?
Bild.pixelformat := pf32Bit;
// Nur die erste Zeile auslesen (Als Test)
zeile:= 0;
// Später dann Alle Zeilen so auslesen? : for zeile := 0 to Bild.height do
//Alle Spalten / Pixel einer Zeile auslesen
for spalte := 0
to Bild.Width
do begin;
//Zeiger auf Zeile setzen
p := Bild.scanline[zeile];
//Hier die 3 Farbwerte pro Pixel auslesen (Diesen Teil hab ich im Netz gefunden)
b := p[spalte * 4];
g := p[spalte * 4 + 1];
r := p[spalte * 4 + 2];
// Ab ins Memo als test und um später das gesuchte Teilbild per String zu suchen.
memo1.Lines.Add(ColorToString(
rgb(r, g, b)));
end;
bild.free;
end;