Und meine Antwort ist: Die Frage ist falsch gestellt.n1nja schrieb:
Meine Frage war ja letztendlich "nur" C++, bessere Performance?! Danke euch bisher sehr:)
Bessere Performance ergibt sich nicht aus C++, sondern aus dem Benutzen von Alternativen zu
Graphics.GetPixel
.Tja, das Problem ist, ich kann nur auf ein sehr ausgefeiltes Sample verweisen, was dementsprechend anspruchsvoll geproggt ist:Ok und wie macht man es dann?!
Convolution-Filter sind ein paar Übungen zur Bildverarbeitung, und darin gibts eine Klasse
PixelHelper
, die die PixelDaten einer Bitmap als 2D-Array von Bytes verfügbar macht.Deshalb sind die dort vorgestellten BildFilter sehr sehr flott (man könnte noch bischen rausholen, aber phh!)
Wie gesagt: PixelHelper ist des Pudels Kern, wenns dir gelingt, den auf deine Bitmapse anzuwenden, dass sollte die Performance mindestens verhundertfachen.
Noch kurz zur Funktionsweise der PixelHelpers:
1) du übergibst ihm eine Bitmap, und kriegst das Byte-Array mit den Pixel-Daten zurück (ReadPixels). Daraus kannst du das Bild auslesen.
2) Du kannst bei Bedarf mit .CreateWritePixels dir ein zweites Array geben lassen, in dass du Byte-Werte reinschreiben kannst, und so quasi ein neues Bild aufbauen.
3) Mit CreateResultBitmap wird das WritePixels-Array in eine ordentliche Bitmap verwandelt.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()