Ich möchte von einem Image ein Negativbild erstellen. Dazu habe ich folgenden Code geschrieben:
[code]
public static Bitmap GrayscaleImage(Image img)
{
int width = img.Width;
int heigth = img.Height;
Bitmap source = (Bitmap)img;
for (int i=0; i<width; i++)
for (int j=0; j<heigth; j++)
{
Color pixelColor = source.GetPixel(i, j);
byte R = Convert.ToByte(255 - pixelColor.R);
byte G = Convert.ToByte(255 - pixelColor.G);
byte B = Convert.ToByte(255 - pixelColor.B);
byte value = Convert.ToByte( (R+G+B)/3 );
source.SetPixel(i, j, Color.FromArgb(value, value, value));
}
return source;
}
[/code]
Beim Praxistest zeigte sich nun, dass diese Methode unter umständen sehr langam ist. Hatt jemand eine Idee, wie ich das ganze beschleunigen kann?
der schlüssel dürft die Benutzung von unsafe-Code sein:
Hier mal 2 Links die ich auf die schnelle gefunden habe:*http://www.codeproject.com/csharp/quickgrayscale.asp *http://www.codeproject.com/cs/media/csharpgraphicfilters11.asp
Untersuche auch einmal GetPixel und SetPixel um Längen geschlagen. 800 mal schneller
Gruß Jürgen
Vielen Dank, die Posts haben mir auf jeden Fall weiter geholfen 😁