So sollte es gehen:
Code:
var left, right, top, bottom: integer := 0;
für jede Zeile y := 0 .. height-1:
für jede Spalte x := 0 .. width-1:
wenn pixel[x,y] <> WEIß dann:
top := min(top, y);
bottom := max(bottom, y);
left := min(left, x);
right := max(right, x);
Das kannst du sicher so umsetzen, dass es Scanline benutzt
Man könnte einige
min und
max einsparen, aber so sollte das Grundprinzip klar werden:
Gesucht ist die x-Koordinaten der nicht-weißen Pixel am weitesten links und rechts sowie die y-Koordinaten der nicht-weißen Pixel am weitesten oben und unten.
Wenn die Ränder verhältnismäßig klein sind, könnte es etwas bringen,
top und
bottom beziehungsweise
left und
right aus unterschiedlichen Richtungen zu suchen.